为什么Xcode使用NSStringFromClass([AppDelegate class])而不仅仅是@“AppDelegate”或者nil

时间:2013-01-26 13:03:22

标签: objective-c xcode

我注意到在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;
  }

我只是想知道这是否有原因?这对我来说似乎有点做作,但我希望能够直截了当。

1 个答案:

答案 0 :(得分:10)

这是一个汇编检查。如果可以在编译时检查参数,那就更好了。如果它只是一个字符串,则无法检查。

关于nil参数,文档说:

  

如果从应用程序的主nib文件加载委托对象,请指定nil。

假设您使用xib文件来声明应用程序委托的类。好吧,很多项目都没有。通常,没有xib文件的项目模板(例如“空应用程序”)不能使用nil