在 iPhone 或 iPad 应用程序中调用 main 时会发生啥?
Posted
技术标签:
【中文标题】在 iPhone 或 iPad 应用程序中调用 main 时会发生啥?【英文标题】: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 时会发生什么?
谢谢!
【问题讨论】:
【参考方案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 中查看这些条目。
【讨论】:
【参考方案2】:我刚刚找到了this,这很有趣。
【讨论】:
【参考方案3】:另请注意,如果您在 Xcode 中使用其中一个模板创建一个新项目,Xcode 将构建一个非常好的 main 方法,它肯定会为您调用 didFinishLaunchWithOptions,您可以分析并遵循 Xcode 的引导。
【讨论】:
以上是关于在 iPhone 或 iPad 应用程序中调用 main 时会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章
目标 C:UITableView:cellForRowAtIndexPath 在 iPhone 中被调用但在 iPad 中失败
检查 Phonegap 应用程序是不是在 iPad 或 iPhone 上运行