基于Objective-C的iOS开发--入门篇
生活随笔
收集整理的這篇文章主要介紹了
基于Objective-C的iOS开发--入门篇
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基于Objective-C的iOS開發--入門篇
- 1、Objective-C 基礎
- 2、ios開發環境搭建
- 3、CocoaPods
- 4、LLDB調試
- 5、ios應用啟動流程
- 6、關于代碼閱讀
1、Objective-C 基礎
Objective-C,顧名思義,其擴展了標準的ANSI C語言,引入了消息傳遞機制和面向對象編程。(以下默認已具有C/C++語言基礎)
- .h文件:頭文件。
- .m文件:源代碼文件,可以包含Objective-C 和 C的代碼。
- .mm文件:源代碼文件,可以包含Objective-C、C以及C++的代碼。僅在需要使用C++特性時使用。
- 頭文件引用:除了可以使用#include,Objective-C 提供了更好的指令 #import確保相同的頭文件僅會被包含一次(推薦使用這種方式)。
- 消息傳遞:Objective-C的面向對象語法源于Smalltalk消息傳遞風格。不同于c++等面向對象語言 對象調用的說法,其采用對象之間消息傳遞的思想,天生具備動態綁定能力,允許傳遞未知的消息(編譯器不報錯),直到運行時才處理消息。反之,C++在編譯期就會檢查是否有對應的方法,若沒有則報錯。另外Objective-C也可以將消息發送給空對象,默認為不做任何事,不用擔心程序崩潰。
- 打印日志
- 判斷文件是否存在
- 應用沙盒
- 每個ios應用都有自己的應用沙盒,一般來說每個應用只能訪問自己的沙盒文件,每個沙盒中包含三個目錄:Document、Library、temp
- 獲取沙盒路徑
參考:
[1]從零開始的iOS開發之旅:Objective-C篇(上)
[2]Objective-C 入門教程
[3]iOS開發~向沙盒中寫入文件、文件夾以及從沙盒中讀取文件
[4]iOS 如何將NSString類型字符串 寫入本地文件
2、ios開發環境搭建
- 首先具備一臺mac電腦,下載Xcode并安裝。
- 熟悉xcode界面
- 構建第一個ios項目
由于xcode版本的不同,具體的xcode界面可能會和參考博文有所不同,但是思路是大致相同的。
參考:
[1]【iOS 開發】Objective-C 入門 Xcode 環境詳解
[2]一些教程集合
3、CocoaPods
- CocoaPods是開發ios應用程序的第三方庫的依賴管理工具,用Ruby寫的,由若干個Ruby包(gems)構成。Gem是一個管理Ruby庫和程序的標準包,例如通過Gem來安裝cocoapods: sudo gem install cocoapods
- Ruby文件擴展名是.rb;Ruby語法;
- podspec文件:是cocoapods引入第三方代碼庫的配置索引文件。我們將自己的工程創建發布成一個pod需要編寫.podspec文件。
- Podfile&Podfile.lock的解析
參考:
[1]CocoaPods原理(一)
[2]Podspec 文件分析
4、LLDB調試
- bt: 查看堆棧信息
- image lookup --type [name] :查看類型
- image lookup --name :查看方法信息文件位置等
- d: 反匯編當前目標中的指定命令,默認為當前函數
- up: 查看上一步的堆棧調用信息
- frame select [number] : 跳轉至指定堆棧查看,源碼和匯編(系統的或打包的),定位某個方法的具體實現。
參考:
[1] LLDB 調試小結
5、ios應用啟動流程
- 解析Info.plist
- Mach-O(可執行文件)加載
- app的二進制文件內部的所有方法和函數調用,都有一個在當前二進制文件中的偏移地址。運行時(加載到內存),每次系統都會隨機分配一個ASLR(Address Space Layout Randomization,地址空間布局隨機化)地址值,如果想訪問二進制文件中的某個方法,只需要ASLR+偏移值找到運行時的內存地址。
- 程序執行
- pre-main階段
- main階段
- 調用main函數
- 調用UIApplicationMain()
- 調用applicationWillFinishLaunching
- 調用didFinishLaunchingWithOptions:完成初始化,并展示首頁
參考:
[1] iOS應用的啟動流程和優化詳解
6、關于代碼閱讀
- 畫流程圖
- UML 類圖、時序圖: 在線畫圖
- 在線畫圖2
總結
以上是生活随笔為你收集整理的基于Objective-C的iOS开发--入门篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数组黑科技(偏性能方面)未完待更新...
- 下一篇: 第三期:ArcMap基础