1.pch文件中的代碼是全局的,不管是#import頭文件還是#define宏,都可以在項目中的所有文件中使用。(凡是涉及到OC語法的內(nèi)容都要放入到#ifdef __OBJC__ #endif中)。
2.pch中最好使用下面的宏對NSLog函數(shù)進行替換,在發(fā)布的時候直接將后部的NSLog進行注釋則代碼中不會打印任何值。
#define MyLog(...) NSLog(__VA_ARGS__)3.IOS在未打包狀態(tài)的時候會默認有一個DEBUG宏,在打包后則會自動刪除,可以利用判斷來優(yōu)化上方代碼。
#ifdef DEBUG#define MyLog(...) NSLog(__VA_ARGS__)#else#define MyLog(...)#endif
4.函數(shù)的外部聲明:extern type name();
5.UIapplication是單例模式,只能通過sharedApplication方法獲得,如果alloc init會報錯。
6.獲得UIApplication對象后可以修改各種屬性
[application openURL:[NSURL URLwithString:@""]]7.AppDelegate類即UIApplication的delegate對象,并且已經(jīng)建立好連接了。(在實現(xiàn)文件中有定義好的方法,有英文注釋)。
8.UIWindow是一種特殊的UIView,通常一個App只有一個UIWindow。
9.IOS程序啟動完畢后,創(chuàng)建的第一個視圖控件就是UIWindow,接著創(chuàng)建控制器的View,最后將控制器的View添加到UIWindow上面。
10.給UIWindow添加ViewController的時候選擇rootViewController屬性進行賦值,如果使用addSubview可能會出現(xiàn)野指針。
11.旋轉(zhuǎn)事件發(fā)生的時候會首先有UIApplication知道,然后通知UIWindow,再由UIWindow通知自己的rootViewController。如果使用addSubview則沒有效果。
12.[UIScreen mainScreen]可以獲得屏幕的信息,給UIWindow的frame賦值mainScreen的bounds屬性則可以使UIWindow布滿屏幕并且x,y為0,0;
13.[self.window makeKeyAndVisible]是使self.window變?yōu)橹鞔翱?KeyWindow)并且顯示。makeKeyWindow方法則只是變?yōu)橹鞔翱凇?/p>
14.非KeyWindow的時候窗口的子控件TextField不能輸入值(IOS7以前)
14.程序啟動的完整過程
1.main函數(shù)
2.UIApplicationMain
* 創(chuàng)建UIApplication對象
* 創(chuàng)建UIApplication的delegate對象
3.delegate對象開始處理(監(jiān)聽)系統(tǒng)事件(沒有storyboard)
* 程序啟動完畢的時候, 就會調(diào)用代理的application:didFinishLaunchingWithOptions:方法
* 在application:didFinishLaunchingWithOptions:中創(chuàng)建UIWindow
* 創(chuàng)建和設(shè)置UIWindow的rootViewController
* 顯示窗口
3.根據(jù)Info.plist獲得最主要storyboard的文件名,加載最主要的storyboard(有storyboard)
* 創(chuàng)建UIWindow
* 創(chuàng)建和設(shè)置UIWindow的rootViewController
* 顯示窗口
由于本階段學(xué)習(xí)目的為初步熟悉IOS,所有知識點不做深入,僅以灰色標注在意的知識點,當有空的時候回頭再議。
新聞熱點
疑難解答