ios 笔记之 Iphone程序运行流程

来源:互联网 发布:js中遍历json 编辑:程序博客网 时间:2024/04/29 16:24

main.m文件,iOS应用程序的主入口


main函数的两个参数为命令行参数,在ios开发中不会用到这些元素,包括这两个参数是为了与标准ANSI C保持一致


UIApplicationMain函数:

为应用程序提供主入口点,创建新的应用程序实例和它的委托。委托负责处理应用程序状态变更,并为那些变更提供响应

int main(int argc, char *argv[]){    @autoreleasepool {        return UIApplicationMain(argc, argv, nil, NSStringFromClass([YZAppDelegate class]));    }}


启动和加载窗口后,应用程序委托退居幕后,几乎所有应用程序操作都转到UIViewController类的某个子类,应用程序委托通常不再发挥作用,除非应用程序将要结束,或者出现内存问题。


main() 调用UIApplicationMain函数 ---> 应用程序委托(AppDelegate) ----> 视图控制器(UIViewConstroller)


AppDelegate解说

#pragma mark 在应用程序加载完毕之后调用- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{   NSLog(@"didFinishLaunchingWithOptions-加载完毕");    // 初始化一个窗口    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];    // Override point for customization after application launch.    // 传入xib文件名来初始化一个控制器    self.viewController = [[[YZViewController alloc] initWithNibName:@"YZViewController" bundle:nil] autorelease];       // 设置窗口的根控制器    self.window.rootViewController = self.viewController;    // 上面的代码内部执行了下面代码的操作    // [self.window addSubview:self.viewController.view];        // 窗口不会默认显示,需要调用方法来显示    // keyWindow是主窗口,只有主窗口才能跟用户正常交互    [self.window makeKeyAndVisible];    // self.window.hidden = NO;    return YES;}#pragma mark 程序失去焦点的时候调用(不能跟用户进行交互了)- (void)applicationWillResignActive:(UIApplication *)application{    NSLog(@"applicationWillResignActive-失去焦点");    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.}#pragma mark 当应用程序进入后台的时候调用(点击HOME键)- (void)applicationDidEnterBackground:(UIApplication *)application{    NSLog(@"applicationDidEnterBackground-进入后台");}#pragma mark 当应用程序进入前台的时候调用- (void)applicationWillEnterForeground:(UIApplication *)application{    NSLog(@"applicationWillEnterForeground-进入前台");}#pragma mark 当应用程序获取焦点的时候调用// 获取焦点之后才可以跟用户进行交互- (void)applicationDidBecomeActive:(UIApplication *)application{    NSLog(@"applicationDidBecomeActive-获取焦点");}#pragma mark 程序在某些情况下被终结时会调用这个方法- (void)applicationWillTerminate:(UIApplication *)application{    NSLog(@"applicationWillTerminate-被关闭");}


另:应用图标和应用图像

Icon.png和Default.png,前者是应用图标,后者是启动画面

Icon.png尺寸分别准备 29*29(在设置里显示) 57*57(桌面图标) 512*512(发布展示用)各一张

---> 应用程序委托(AppDelegate) ----> 视图控制器(UIViewConstroller)


原创粉丝点击