Object-c對象本質上就是一個結構體
NSObject所占內存的大小就是結構體指針所占的大小,
64bit 從內存中動態(tài)分配的大小是由malloc_size()函數獲取的优床,即16服球,NSObject對象真正使用的大小是8
程序啟動原理:
Main函數中執(zhí)行了一個UIApplicationMain函數
intUIApplicationMain(int?argc,char?*argv[],NSString?*principalClassName,NSString?*delegateClassName);
UIApplicationMain函數會根據principalClassName創(chuàng)建UIApplication對象埠巨,根據delegateClassName創(chuàng)建一個delegate對象仰剿,并將該delegate對象賦值給UIApplication對象的delegate屬性
接著會簡歷應用程序的Main Runloop(事件循環(huán))备徐,進行事件的處理(調用delegate對象的application:didFinishLaunchingWithOptions:方法)
程序啟動的完整過程
1.main函數
2.UIApplicationMain
*創(chuàng)建UIApplication對象
*創(chuàng)建UIApplication的delegate對象
3.delegate對象開始處理(監(jiān)聽)系統(tǒng)事件(沒有storyboard)
*程序啟動完畢的時候全陨,就會調用代理的applicatin:didFinishLaunchingWithOptions:方法
*在application:didFinishLaunchingWIthOptions:中創(chuàng)建UIWindow
*創(chuàng)建和設置UIWindow的rootViewController
*顯示窗口
4.根據Info.plist獲得最主要storyboard的文件名爆班,加載最主要的storyboard(有storyboard)
*創(chuàng)建UIWindow
*創(chuàng)建和設置UIWindow的rootIVewController
*顯示窗口