iOS开发中忽略的main函数在iOS应用中,main函数的作用很小。它的主要工作是控制UIKit框架。因此,您在Xcode中创建的任何新项目都带有一个默认的main函数。除少数例外,您永远不应更改此函数的实现。#import#import"AppDelegate.h"intmain(intargc,char*argv[]){@autoreleasepool{returnUIApplicationMain(argc,argv,nil,NSStringFromClass([AppDelegateclass]));}}UIApplicationMain函数有四个参数并使用这些参数来初始化应用程序。您不应更改传递给此函数的默认值。尽管如此,了解它们的目的以及它们如何启动应用程序仍然很有价值。UIKIT_EXTERNintUIApplicationMain(intargc,char*argv[],NSString*principalClassName,NSString*delegateClassName);参数解释:argc和argv:是ISOC标准的main函数的参数,直接传递给UIApplicationMain进行相关处理。参数包含诸如应用程序从系统启动的时间等信息。这些参数由UIKit基础结构解析,否则可以忽略。principalClassName:该参数标识应用类的名称(该类必须继承自UIApplication类)。这是负责运行应用程序的类。建议为该参数传递nil。delegateClassName:是应用类的代理类。应用程序的代理负责管理系统和您的代码之间的高级交互。Xcode的项目模板会自动将此参数设置为适当的值。UIApplicationMain函数做的另一件事是加载应用程序的主用户界面文件。主界面文件包含与应用程序用户界面中显示的初始视图相关的对象。对于使用故事板的应用程序,此函数从故事板的初始视图控制器和应用程序委托提供的窗口运行。对于使用nib文件的应用程序,此方法将nib文件的内容加载到内存中,但不会在您的应用程序窗口中运行;您必须在应用程序委托方法中运行以下方法。-(BOOL)应用程序:(UIApplication*)applicationwillFinishLaunchingWithOptions:(NSDictionary*)launchOptionsNS_AVAILABLE_IOS(6_0);一个应用程序可以有一个主情节提要文件或一个主nib文件,但不能同时有。故事板是指定应用程序用户界面的首选方式,但并非所有版本的iOS都支持。应在应用程序的Info.plist文件中的UIMainStoryboardFile键中设置应用程序主故事板的文件名。(对于基于nib文件的应用程序,您的主nib文件的名称需要在NSMainNibFile键中设置。)通常,Xcode在您创建项目时为相应的键创建值,但您可以根据需要这样做。改变。如果主nib文件存在,它将在nib文件对象中查找Application对象和连接到它的委托。该函数根据principalClassName创建一个UIApplication对象,然后根据delegateClassName创建一个delegate对象,并将UIApplication对象中的delegate属性设置为delegate对象。程序启动时:当你的应用程序启动时(无论是进入前台还是后台),你需要使用以下方法并执行相应的操作:-(BOOL)application:(UIApplication*)applicationwillFinishLaunchingWithOptions:(NSDictionary*)launchOptionsNS_AVAILABLE_IOS(6_0);-(BOOL)应用程序:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptionsNS_AVAILABLE_IOS(3_0);①查看启动选项词典的内容,查看程序是如何启动的,做出相应的反应。②初始化应用程序的关键数据结构。③准备应用程序的窗口和视图以供显示。使用OpenGLES的应用程序不应使用此方法来准备其绘图环境。相反,他们应该推迟启动OpenGLES绘图方法,直到-(void)applicationDidBecomeActive:(UIApplication*)application方法调用。如果您的应用程序在启动时没有自动加载主故事板或nib文件,您可以使用-(BOOL)application:(UIApplication*)applicationwillFinishLaunchingWithOptions:(NSDictionary*)launchOptions来对应用程序的窗口显示进行编程。对于同时支持纵向和横向的应用程序,始终将主窗口的根视图控制器设置为纵向。如果设备在启动时处于不同的方向,系统会告诉根视图控制器显示窗口的旋转信息以保持正确的方向。您的应用程序-(BOOL)application:(UIApplication*)applicationwillFinishLaunchingWithOptions:(NSDictionary*)launchOptions;-(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions;方法应该始终是轻量级的,以减少应用程序的启动时间。该应用程序预计会启动并自行初始化,并在不到5秒的时间内开始处理事件。如果一个应用程序没有及时完成它的启动周期,系统会杀死它。因此,任何有可能减慢启动速度的任务(例如访问网络)都应该在异步工作线程中执行。当程序启动到前台时,系统也会调用-(void)applicationDidBecomeActive:(UIApplication*)application;方法完成到前台的过渡。由于此方法在启动时和从后台转换到前台时都会被调用,因此可以使用它来执行两种转换共有的任何任务。当程序在后台运行时,除了准备好处理到达的任何事件之外,应用程序不需要做太多工作。