Xcode4.2之前的main函数如下:
int main(int argc,
char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool
alloc] init];
int retVal = UIApplicationMain(argc, argv,
nil, nil);
[pool
release];
return retVal;
}
Xcode4.2工程中的主函数为
int main(int argc,
char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([TCAppDelegate class]));
}
}
可以看出一个重要的变化是在4.2使用了ARC技术后,NSAutoreleasePool被废弃,改用@autoreleasepool,这里请不要该回原先的方式,如果改变后,在开启ARC选项后,程序将不能通过编译。
不论那个版本,UIApplicationMain函数都是程序的关键点,下面是对这个函数的分析:
UIApplicationMain()函数是初始化程序的核心,它接受4个参数。其中argc和argv两个参数来自于main()接受的两个参数;另外两个String型参数分别表示程序的主要类(principal
class)和代理类(delegate class)。如果主要类(principal class)为nil,则默认为UIApplication;如果代理类(delegate class)为nil,则程序假设程序的代理来自Main nib文件。如果这两个参数任意一个不为nil,则UIApplicationMain()函数则会根据参数创建相应的功能类。因此,如果程序中使用自定义的UIApplication类的子类(不建议继承UIApplication类建立自定义的子类),你需要将你的自定义类名作为第3个参数传进来。
根据上面的分析,我们来看以下iOS程序的声明周期
对于UIApplicationMain函数中的第四个参数,我们也可以看出新旧版本的不同,我们建议在原先的工程中使用新的版本,以提高程序的速度,共修改如下几处
假如你的工程类都是以TC开头。
1.import你的appdelegate类,并修改第四个参数如下:
UIApplicationMain(argc, argv,nil,
NSStringFromClass([TCAppDelegate class]));
2.删除MainWindow.xib文件
3.在工程的Info.plist文件中删除下面一行
4.在TCAppDelegate.m文件中,修改
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions函数,如下:
self.window = [[UIWindow
alloc] initWithFrame:[[UIScreen
mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[TCViewController
alloc] initWithNibName:@"TCViewController"
bundle:nil];
self.window.rootViewController =
self.viewController;
[self.window
makeKeyAndVisible];
return YES;
其中加粗部分为新增部分。
经过上面的修改,我们就可以在程序load的过程中,省去加载MainWindow.xib文件,提高程序的速度。
分享到:
相关推荐
一步一步学习iOS5编程-项目源代码
iOS-RAC-高阶函数-带注释
一步一步学习 iOS 5编程-SimpleTable 项目,源代码实现到第九部分。
vuforia-sdk-ios-7-1-31,高通ar ios最新版本。vuforia-sdk-ios-7-1-31,高通ar ios最新版本。
yolov5移植到ios运行测试例子, 亲测有效。
ios-cmake-master用来交叉编译的,很好用
vuforia-sdk-ios-6-5-25.zip vuforia sdk for iOS Use the Vuforia SDK to build Android, iOS, and UWP(win10+) applications for mobile devices and digital eyewear. Apps can be built with Android Studio, ...
宜家的包装实际规范,详细介绍了包装设计中的材质、尺寸、印刷以及运输等环节需要注意的事项及细节点,作为行业从事人员的参考资料非常的不错。
网易airtest for mac必备agent, iOS-Tagent 其实就是 WebDriverAgent 仔细看,会发现iOS-Tagent会比WebDriverAgent简略得多。 iOS-Tagent其实就是WDA的优化版本。 git clone ...
* 函数式编程 GITHUB地址: https://github.com/CranzCapatain/IALayout
高通vuforia-unity-mobile-android-ios-4-0-5-beta
蓝牙mesh技术,Nordic公司所开发的iOS-nRF-Mesh-Library工具包,可自行在github上搜索
ios demo,object-c调用函数和c++函数。
iOS编程Objective-C学习代码
5、【cocos2d-x IOS游戏开发-捕鱼达人5】C++中函数代理与信号插槽机制 资源引用页: 6、【cocos2d-x IOS游戏开发-捕鱼达人6】实现开始菜单 资源引用页: 7、【cocos2d-x IOS游戏开发-捕鱼达人7】游戏场景基础实现 ...
IOS代码示例-登录+界面切换+界面间传参,代码简洁,亲测可用。IOS代码示例-登录+界面切换+界面间传参,代码简洁,亲测可用。IOS代码示例-登录+界面切换+界面间传参,代码简洁,亲测可用。IOS代码示例-登录+界面切换+...
Developing-iOS-9-Apps-with-Swift, Stanford 公开课,Developing iOS 9 Apps with Swift 字幕翻译
UnitySetup-iOS-Support-for-Editor-5.5.6f1
iOS 星级评论-小星星的画法iOS 星级评论-小星星的画法
9、【cocos2d-x IOS游戏开发-捕鱼达人9】鱼与动画 资源引用页: 10、【cocos2d-x IOS游戏开发-捕鱼达人10】鱼的产生和移动 资源引用页: 11、【cocos2d-x IOS游戏开发-捕鱼达人11】鱼的产生和移动:完善 资源引用页...