【问题标题】:What happens when main is called in an iPhone or iPad app?在 iPhone 或 iPad 应用程序中调用 main 时会发生什么?
【发布时间】:2011-11-17 10:39:21
【问题描述】:
我目前正在尝试调试 iPhone 应用程序的问题。当我在 Xcode 中运行它时,会调用 main,但不会调用 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions。这让我想到了一个基本问题,它应该可以帮助我解决这个问题,而且还可以更多地了解 iPhone/iPad 应用程序的启动顺序。那么,谁能简明扼要地解释一下在 iPhone 或 iPad 应用程序中调用 main 时会发生什么?
谢谢!
【问题讨论】:
标签:
iphone
objective-c
xcode
main
uiapplicationdelegate
【解决方案1】:
当 main 被调用时,
UIKIT_EXTERN int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
被调用。
这是 Apple 对这种方法的看法。
如果为 principalClassName 指定 nil,则使用 Info.plist 中 NSPrincipalClass 的值。如果没有指定 NSPrincipalClass 键,则使用 UIApplication 类。委托类将使用 init 实例化。
您可以在 main.h 或 info.plist 中查看这些条目。
【解决方案3】:
另请注意,如果您在 Xcode 中使用其中一个模板创建一个新项目,Xcode 将构建一个非常好的 main 方法,它肯定会为您调用 didFinishLaunchWithOptions,您可以分析并遵循 Xcode 的引导。