我注意到在Xcode的最新版本中默认使用ARC,当你启动一个新项目时,Xcode为你生成的main.m文件使用NSStringFromClass([AppDelegate class])
作为UIApplicationMain中app代理的参数仅@"AppDelegate"
或仅nil
新方式:
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
旧方式:
@autoreleasepool {
int retVal = UIApplicationMain(argc, argv, nil, nil);
return retVal;
}
我只是想知道这是否有原因?这对我来说似乎有点做作,但我希望能够直截了当。
答案 0 :(得分:10)
这是一个汇编检查。如果可以在编译时检查参数,那就更好了。如果它只是一个字符串,则无法检查。
关于nil
参数,文档说:
如果从应用程序的主nib文件加载委托对象,请指定nil。
假设您使用xib文件来声明应用程序委托的类。好吧,很多项目都没有。通常,没有xib文件的项目模板(例如“空应用程序”)不能使用nil
。