iPhone & iPad程序运行流程浅谈
2011-02-15 01:19
337 查看
我在刚接触iOS开发的时候,也对这个运行流程模糊不清。
希望这边文章能对初学的朋友给予帮助。
1. 和大多数语言一样,每一个iPhone应用也都是从主函数开始运行,它的main函数都在XCode的Other Reasource逻辑目录下。
系统会自动给你生成上面的代码,第三个参数和第四个参数指明了应用程序的生命周期管理类和对生命周期管理类产生事件进行响应的委托类,第三个参数被指定为nil则会被视为UIApplication,程序的生命周期管理类一般就是UIApplication,也或者是他的子类(一般没人这么干吧?)。
第四个参数如果是nil的话,则该函数会去参考**-info.plist这个配置文件来获得一个主NIB文件以完成余下的工作。
在**-info.plist文件中他会去找Main nib file base name这一列的值作为要载入的NIB文件名。(默认都是MainWindow)
并且从中指定生命周期管理类的委托。
2. 打开Resource目录下的MainWindowa.xib,会看到Files‘s Owner的Class是UIApplication。
这个类有一个委托,Interface Builder将他连接到了** App Delegate。这里的意思就是说在运行周期中UIApplication会产生一些事件,但是他交给了** APP Delegate来做处理。
打开** APP Delegate.h,默认是在Classess逻辑目录下。可以看到UIWindow和一个Controller都被声明成了IBOutlet。
这样就可以在Interface Builder里连接,并且完成相应的初始化工作。
观察MainWindow.xib的** APP Delegate实例,Interface Builder已经为我们连接上了一个Window和一个Controller实例。
再看看** APP Delegate.m。
他在UIApplication的这个回调方法中,将Controller的视图加载到了Window上。
关于这个回调方法文档当中有这么一句话, It is called after your application has been launched and its main nib file has been loaded. 就是说在程序运行起来并且主nib文件完成加载后,这个委托方法将会被调用。
整个程序目前暂时不需要我们考虑的初始化流程就结束了, 在这之后,我们就可以加入我们程序的逻辑了。
由于时间仓促,如有疏漏还请大家指出。
希望本文可以帮到你。
希望这边文章能对初学的朋友给予帮助。
1. 和大多数语言一样,每一个iPhone应用也都是从主函数开始运行,它的main函数都在XCode的Other Reasource逻辑目录下。
UIApplicationMain(argc, argv, nil, nil);
系统会自动给你生成上面的代码,第三个参数和第四个参数指明了应用程序的生命周期管理类和对生命周期管理类产生事件进行响应的委托类,第三个参数被指定为nil则会被视为UIApplication,程序的生命周期管理类一般就是UIApplication,也或者是他的子类(一般没人这么干吧?)。
第四个参数如果是nil的话,则该函数会去参考**-info.plist这个配置文件来获得一个主NIB文件以完成余下的工作。
在**-info.plist文件中他会去找Main nib file base name这一列的值作为要载入的NIB文件名。(默认都是MainWindow)
并且从中指定生命周期管理类的委托。
2. 打开Resource目录下的MainWindowa.xib,会看到Files‘s Owner的Class是UIApplication。
这个类有一个委托,Interface Builder将他连接到了** App Delegate。这里的意思就是说在运行周期中UIApplication会产生一些事件,但是他交给了** APP Delegate来做处理。
打开** APP Delegate.h,默认是在Classess逻辑目录下。可以看到UIWindow和一个Controller都被声明成了IBOutlet。
@interface testSDKAppDelegate : NSObject <UIApplicationDelegate> { UIWindow *window; testViewController *viewController; } @property (nonatomic, retain) IBOutlet UIWindow *window; @property (nonatomic, retain) IBOutlet testViewController *viewController;
这样就可以在Interface Builder里连接,并且完成相应的初始化工作。
观察MainWindow.xib的** APP Delegate实例,Interface Builder已经为我们连接上了一个Window和一个Controller实例。
再看看** APP Delegate.m。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after app launch. [self.window addSubview:viewController.view]; [self.window makeKeyAndVisible]; return YES; }
他在UIApplication的这个回调方法中,将Controller的视图加载到了Window上。
关于这个回调方法文档当中有这么一句话, It is called after your application has been launched and its main nib file has been loaded. 就是说在程序运行起来并且主nib文件完成加载后,这个委托方法将会被调用。
整个程序目前暂时不需要我们考虑的初始化流程就结束了, 在这之后,我们就可以加入我们程序的逻辑了。
由于时间仓促,如有疏漏还请大家指出。
希望本文可以帮到你。
相关文章推荐
- iPhone程序运行流程浅谈
- iPhone程序运行流程浅谈
- iPhone程序运行流程浅谈
- [ios]howto - IPAD运行IPHONE程序全屏
- IOS学习笔记1—Iphone程序运行流程
- 获取iOS程序之运行环境是iphone或ipad
- IOS学习笔记1—Iphone程序运行流程
- Iphone程序运行流程
- ios 笔记之 Iphone程序运行流程
- 美国白宫app源代码激情奉献 iPad & iPhone White House app
- 运行在Linux系统上的Java程序可能会出现"Too many open files"
- 将APP程序发布到iPhone或iPad上去测试
- 程序运行流程——准备篇
- 穿针引线,帮你回忆, 汇总:Android系统启动流程 & 应用程序'进程'启动 & 应用'程序'启动流程(框架图、流程图、时序图)
- 【java & c#】通过控制台编译和运行程序//不依赖IDE
- iPhone开发--运行Three20的示例程序
- 错误:'nasm' 不是内部或外部命令,也不是可运行的程序
- Permission denied: win7下面eclipse上传本地文件到DFS && 运行M/R程序时出现的同样的错误解决方法
- 试图搞懂MDK程序下载到Flash(一)--Nand Flash启动流程,加载域和运行域
- 浅谈iPhone和iPad开发中的图标设置