ios应用程序的起点

时间:2014-02-03 15:06:41

标签: ios objective-c

如果在

中写一些东西
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

     NSLog(@"Starting point 1");
}

的main.m

 int main(int argc,char * argv[])
 {
  ......

  NSLog(@"Starting point 0");
  }

哪一个更有用main.m或appDelegate.m一个和哪个scenerio。

3 个答案:

答案 0 :(得分:6)

这篇文章解释了应用启动顺序。

http://oleb.net/blog/2011/06/app-launch-sequence-ios/

作为文章的简历,结论是:

除了应用程序:didFinishLaunchingWithOptions:之外,在启动序列期间还有几个自定义代码入口点(通常不需要):

在调用main()之前直接在UIApplicationMain()。 自定义UIApplication子类的init方法。 我们的应用程序的initWithCoder:或awakeFromNib方法如果是从NIB文件(默认)创建的,则委托。 我们的应用程序的+ initialize方法委托类或自定义UIApplication子类。任何类在从程序中发送第一条消息之前都会收到+ initialize消息。

注意此序列仅在实际启动应用时发生。如果应用程序已经运行并且只是从后台返回,则不会发生这种情况。

答案 1 :(得分:0)

您应该使用UIApplicationDelegate而不是 main.m

didFinishedLaunching 方法是一个很好的(但不是唯一的)起点。

只有您确定所有iOS特定代码都已正确加载。 在主要负载可能有一个错误,该行将在主要执行,但不在 didFinishedLaunching 方法中执行。

答案 2 :(得分:0)

main()方法是根据iOS应用程序调用的第一件事,但是一般来说,永远不要触及iOS编程中的main()函数。 该      - (BOOL)应用程序:(UIApplication *)应用程序didFinishLaunchingWithOptions(NSDictionary *)launchOptions 在成功启动应用程序后发生,应该用于您在应用程序启动时需要执行的任何过程。