8

我注意到在默认使用 ARC 的最新版本的 Xcode 中,当您开始一个新项目时 Xcode 为您生成的 main.m 文件NSStringFromClass([AppDelegate class])用作 UIApplicationMain 中应用程序委托的参数,而不仅仅是@"AppDelegate"甚至只是nil

新的方法:

@autoreleasepool {
      return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}

老办法:

  @autoreleasepool {
      int retVal = UIApplicationMain(argc, argv, nil, nil);
      return retVal;
  }

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

4

1 回答 1

10

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

关于nil论点,文档说:

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

假设您正在使用 xib 文件来声明应用程序委托的类。嗯,很多项目都没有。一般来说,没有 xib 文件的项目模板(例如“空应用程序”)不能使用nil.

于 2013-01-26T13:05:36.250 回答