我目前正试图调试一个iPhone应用程序的问题。当我在Xcode中运行它时,main
被调用,但不是- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
。这让我想到了一个重要的问题,它可以帮助我解决这个问题,同时也可以帮助我更好地理解iPhone/iPad应用程序的启动顺序。那么,谁能以简洁的方式解释在iPhone或iPad应用程序中调用main时会发生什么?
谢谢!
当main被调用时,
UIKIT_EXTERN int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
。
苹果公司是这么说的
如果为principalClassName指定nil,则从Info. Info中获取NSPrincipalClass的值。使用Plist。如果没有指定NSPrincipalClass键,则使用UIApplication类。委托类将使用init进行实例化。
您可以在main.h或info.plist中检查这些条目
我刚刚发现这个很有趣。
还需要注意的是,如果你在Xcode中使用其中一个模板创建一个新项目,Xcode将为你构建一个非常好的主方法,它肯定会为你调用didFinishLaunchWithOptions,你可以分析并遵循Xcode的领导