在 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 上运行

应用程序在所有 iphone 和 ipad 型号中的外观如何相同

如何在 iPhone 或 iPad 中设置锁屏壁纸

iPhone/iPad 应用程序中的超链接

检测应用程序是不是安装在 iPad 或 iPhone 上(iOS 6 到 iOS 7)