Object-c对象本质上就是一个结构体
NSObject所占内存的大小就是结构体指针所占的大小,
64bit 从内存中动态分配的大小是由malloc_size()函数获取的,即16,NSObject对象真正使用的大小是8
程序启动原理:
Main函数中执行了一个UIApplicationMain函数
intUIApplicationMain(int argc,char *argv[],NSString *principalClassName,NSString *delegateClassName);
UIApplicationMain函数会根据principalClassName创建UIApplication对象,根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象的delegate属性
接着会简历应用程序的Main Runloop(事件循环),进行事件的处理(调用delegate对象的application:didFinishLaunchingWithOptions:方法)
程序启动的完整过程
1.main函数
2.UIApplicationMain
*创建UIApplication对象
*创建UIApplication的delegate对象
3.delegate对象开始处理(监听)系统事件(没有storyboard)
*程序启动完毕的时候,就会调用代理的applicatin:didFinishLaunchingWithOptions:方法
*在application:didFinishLaunchingWIthOptions:中创建UIWindow
*创建和设置UIWindow的rootViewController
*显示窗口
4.根据Info.plist获得最主要storyboard的文件名,加载最主要的storyboard(有storyboard)
*创建UIWindow
*创建和设置UIWindow的rootIVewController
*显示窗口