objective-c - 为什么 Xcode 使用 NSStringFromClass([AppDelegate class]) 而不是仅仅使用 @"AppDelegate"或 nil

标签 objective-c xcode

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

新方式:

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

旧方法:

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

我只是想知道是否有这样的原因?对我来说这似乎有点做作,但我希望一切顺利。

最佳答案

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

关于 nil 参数,文档说:

Specify nil if you load the delegate object from your application’s main nib file.

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

关于objective-c - 为什么 Xcode 使用 NSStringFromClass([AppDelegate class]) 而不是仅仅使用 @"AppDelegate"或 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14537202/

相关文章:

objective-c - NSURLConnection 使用 ARC 发送同步请求

objective-c - Mac OS X Finder 如何确定标题颜色?

ios - swift 2 : "Bool' is not convertible to 'BooleanLiteralConvertible'

ios - 如何发布仅适用于 iPhone 而不是 iPad 的应用程序?

json - Alamofire 类型的表达式在没有更多上下文的情况下是模棱两可的

objective-c - MKMapVIew 问题,我的定位点未按正确方向显示(我正在使用 mkmapview 的罗盘模式)

ios - 如何将 ActivityItem 添加到 UIActivityViewController 的上部事件栏?

objective-c - 无法快速访问 FMDatabaseAdditions 方法?

iphone - UIWebView - 滚动时隐藏地址栏

ios - Xcode 中的应用程序崩溃