(1)iOS项目加载流程:
操作系统发消息给应用程序的主函数 —> 主函数调用系统函数(UIApplicationMain作用为启动应用程序) —> 加载启动类AppDelegate —> 启动类AppDelegate调用启动方法(didFinishLaunchingWithOptions)
(2)main函数, 一般情况下,不需要做修改
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc,char * argv[]) {
@autoreleasepool {
/**
* argc main函数中参数,由操作系统传入,总的参数个数(如运行输出1)
* argv main函数中参数,由操作系统传入,其中第0个参数是程序的全名(如,运行输出:0x00007fff5f4c3648,其中
argv[0]输出:"/Users/xiaoping/Library/Developer/CoreSimulator/Devices/AF356101-2C40-47EA-9BD7-3FB5CB616140/data/Containers/Bundle/Application/786C7C3D-478B-40D3-999E-A304E9D6A167/WPTest.app/WPTest")
* nil UIApplication的实例对象或其子类的实例对象,nil为系统自动设置为UIApplication的实例对象
* NSStringFromClass([AppDelegate class]) AppDelegate的实例对象,是程序的入口类
*/
returnUIApplicationMain(argc, argv,nil,NSStringFromClass([AppDelegateclass]));
}
}
(3)UIWindow
窗体类,充满整个屏幕,在iOS APP中有且仅有一个窗体类,是所有视图的最底层。