zoukankan      html  css  js  c++  java
  • IOS系统基础知识

    在iOS应用中,每个程序得main函数中都调用了UIApplicationMain函数。

    1
    2
    3
    4
    5
    6
    int main(int argc, char *argv[]) 
        @autoreleasepool { 
            return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
        } 
    }

    先来看看UIApplicationMain函数的原型:

    1
    2
    3
    4
    5
    6
    int UIApplicationMain ( 
        int argc, 
        char *argv[], 
        NSString *principalClassName, 
        NSString *delegateClassName 
    );

    前面的argc和argv是ISO C标准的main函数的参数,直接传递给UIApplicationMain进行相关处理。principalClassName是应用程序类的名字,该类必须继承自UIApplication类。而delegateClassName是应用程序类的代理类。如果主要nib文件(在info.plist文件中指定,key是NSMainNibFile)存在,就会在nib文件对象里寻找Application对象和连接它的delegate。此函数会根据principalClassName创建UIApplication对象,然后根据delegateClassName创建一个delegate对象,并将UIApplication对象中的delegate属性设置为delegate对象。接着会建立应用的main runloop,进行事件的处理(首先会调用– application:didFinishLaunchingWithOptions:)。程序正常退出时才返回(如今iOS支持后台运行,系统在必要时会强行杀死不用的进程,一般这个函数不等返回进程就终止了)。

    ------------------------------------------------------------------------------------------------------------

    1、- (void)applicationWillResignActive:(UIApplication *)application

    说明:当应用程序将要入非活动状态执行,在此期间,应用程序不接收消息或事件,比如来电话了

    2、- (void)applicationDidBecomeActive:(UIApplication *)application

    说明:当应用程序入活动状态执行,这个刚好跟上面那个方法相反

    3、- (void)applicationDidEnterBackground:(UIApplication *)application

    说明:当程序被推送到后台的时候调用。所以要设置后台继续运行,则在这个函数里面设置即可

    4、- (void)applicationWillEnterForeground:(UIApplication *)application

    说明:当程序从后台将要重新回到前台时候调用,这个刚好跟上面的那个方法相反。

    5、- (void)applicationWillTerminate:(UIApplication *)application

    说明:当程序将要退出是被调用,通常是用来保存数据和一些退出前的清理工作。这个需要要设置UIApplicationExitsOnSuspend的键值。

    6、- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application

    说明:iPhone设备只有有限的内存,如果为应用程序分配了太多内存操作系统会终止应用程序的运行,在终止前会执行这个方法,通常可以在这里进行内存清理工作防止程序被终止

    7、- (void)applicationSignificantTimeChange:(UIApplication*)application

    说明:当系统时间发生改变时执行

    8、- (void)applicationDidFinishLaunching:(UIApplication*)application

    说明:当程序载入后执行

    9、- (void)application:(UIApplication)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame

    说明:当StatusBar框将要变化时执行

    10、- (void)application:(UIApplication*)application willChangeStatusBarOrientation:

    (UIInterfaceOrientation)newStatusBarOrientation

    duration:(NSTimeInterval)duration

    说明:当StatusBar框方向将要变化时执行

    11、- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url

    说明:当通过url执行

    12、- (void)application:(UIApplication*)application didChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation

    说明:当StatusBar框方向变化完成后执行

    13、- (void)application:(UIApplication*)application didChangeSetStatusBarFrame:(CGRect)oldStatusBarFrame

    说明:当StatusBar框变化完成后执行

    下面是这个类的一些功能:

    1.设置icon上的数字图标

        //设置主界面icon上的数字图标,在2.0中引进, 缺省0

        [UIApplicationsharedApplication].applicationIconBadgeNumber = 4;

    2.设置摇动手势的时候,是否支持redo,undo操作

        //摇动手势,是否支持redo undo操作。

       //3.0以后引进,缺省YES

        [UIApplicationsharedApplication].applicationSupportsShakeToEdit =YES;

    3.判断程序运行状态

        //判断程序运行状态,在2.0以后引入

        /*

         UIApplicationStateActive,

         UIApplicationStateInactive,

         UIApplicationStateBackground

         */

       if([UIApplicationsharedApplication].applicationState ==UIApplicationStateInactive){

            NSLog(@"程序在运行状态");

        }

    4.阻止屏幕变暗进入休眠状态

        //阻止屏幕变暗,慎重使用,缺省no 2.0

        [UIApplicationsharedApplication].idleTimerDisabled =YES;

    慎重使用本功能,因为非常耗电。

    5.显示联网状态

        //显示联网标记 2.0

        [UIApplicationsharedApplication].networkActivityIndicatorVisible =YES;

    6.在map上显示一个地址

       NSString* addressText =@"1 Infinite Loop, Cupertino, CA 95014";

       // URL encode the spaces

        addressText =  [addressTextstringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

       NSString* urlText = [NSStringstringWithFormat:@"http://maps.google.com/maps?q=%@", addressText];

        [[UIApplicationsharedApplication]openURL:[NSURLURLWithString:urlText]];

    7.发送电子邮件

       NSString *recipients =@"mailto:first@example.com?cc=second@example.com,third@example.com&subject=Hello from California!";

       NSString *body =@"&body=It is raining in sunny California!";

        NSString *email = [NSStringstringWithFormat:@"%@%@", recipients, body];

        email = [emailstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

        [[UIApplicationsharedApplication]openURL:[NSURLURLWithString:email]];

    8.打电话到一个号码

        // Call Google 411

        [[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"tel://8004664411"]];

    9.发送短信

        // Text to Google SMS

        [[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"sms://466453"]];

    10.打开一个网址

       // Lanuch any iPhone developers fav site

        [[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"http://itunesconnect.apple.com"]];

  • 相关阅读:
    springmvc中request的线程安全问题
    日志帮助类
    模态框的实现
    getopts的使用方法
    自动生成头文件的脚本
    shell脚本中出现图形化界面
    Linux Centos关机命令
    Linux下IP的存储位置
    tar只解压tar包中某个文件
    Swift 笔记1
  • 原文地址:https://www.cnblogs.com/hermit/p/3653446.html
Copyright © 2011-2022 走看看