IOS學習筆記,ios學習資料
1.pch檔案中的代碼是全域的,不管是#import標頭檔還是#define宏,都可以在項目中的所有檔案中使用。(凡是涉及到OC文法的內容都要放入到#ifdef __OBJC__ #endif中)。
2.pch中最好使用下面的宏對NSLog函數進行替換,在發布的時候直接將後部的NSLog進行注釋則代碼中不會列印任何值。
#define MyLog(...) NSLog(__VA_ARGS__)
3.IOS在未打包狀態的時候會預設有一個DEBUG宏,在打包後則會自動刪除,可以利用判斷來最佳化上方代碼。
#ifdef DEBUG#define MyLog(...) NSLog(__VA_ARGS__)#else#define MyLog(...)#endif
4.函數的外部聲明:extern type name();
5.UIApplication是單例模式,只能通過sharedApplication方法獲得,如果alloc init會報錯。
6.獲得UIApplication對象後可以修改各種屬性
7.AppDelegate類即UIApplication的delegate對象,並且已經建立好串連了。(在實現檔案中有定義好的方法,有英文注釋)。
8.UIWindow是一種特殊的UIView,通常一個App只有一個UIWindow。
9.IOS程式啟動完畢後,建立的第一個視圖控制項就是UIWindow,接著建立控制器的View,最後將控制器的View添加到UIWindow上面。
10.給UIWindow添加ViewController的時候選擇rootViewController屬性進行賦值,如果使用addSubview可能會出現野指標。
11.旋轉事件發生的時候會首先有UIApplication知道,然後通知UIWindow,再由UIWindow通知自己的rootViewController。如果使用addSubview則沒有效果。
12.[UIScreen mainScreen]可以獲得螢幕的資訊,給UIWindow的frame賦值mainScreen的bounds屬性則可以使UIWindow布滿螢幕並且x,y為0,0;
13.[self.window makeKeyAndVisible]是使self.window變為主視窗(KeyWindow)並且顯示。makeKeyWindow方法則只是變為主視窗。
14.非KeyWindow的時候視窗的子控制項TextField不能輸入值(IOS7以前)
14.程式啟動的完整過程
1.main函數
2.UIApplicationMain
* 建立UIApplication對象
* 建立UIApplication的delegate對象
3.delegate對象開始處理(監聽)系統事件(沒有storyboard)
* 程式啟動完畢的時候, 就會調用代理的application:didFinishLaunchingWithOptions:方法
* 在application:didFinishLaunchingWithOptions:中建立UIWindow
* 建立和設定UIWindow的rootViewController
* 顯示視窗
3.根據Info.plist獲得最主要storyboard的檔案名稱,載入最主要的storyboard(有storyboard)
* 建立UIWindow
* 建立和設定UIWindow的rootViewController
* 顯示視窗
由於本階段學習目的為初步熟悉IOS,所有知識點不做深入,僅以灰色標註在意的知識點,當有空的時候回頭再議。