• 14


    XML中间的 数据表达/传输数据的语言

    优点:特别强大 强大到很多平台都有基于XML的独立语言,如MXMLHTML

    缺点:传输小型数据时,特别啰嗦

    size / speed = time

     

    JSON JavaScript Object

    传小型数据时使用

    是什么?中间的 用于表达/传输数据的语言

    XML更小型、更轻量

    JSON语法

    用于表达结构的

    { } 用于表达字典

    [ ] 用于表达数组

    <><><><><><><><><><><><><><><><><><><> 

    用于表达内存

    "" 表达字符串

    23 表达一个数字

    true false 表达一个布尔

    null 表达空

    翻译练习

     

    [

        {"user" : "苹果汇",

         "content" : "iPhone6a的谍照已经被发布",

         "date" : "2012/2/23 8:25:21",

         "lockToTop" : false

        },

        {"user" : "apple官方",

         "content" : "我什么都没说",

         "date" : "2012/2/23 8:28:21",

         "lockToTop" : false

        }

    ]

     

    JSONXML的对比

    JSON                                           XML

    更轻量                                      更高功能

    文件小                                      文件大

    更关注内容                               更加完整的描述结构

    传输数据                                  能干更多其他事情

     

    JSONXML的使用

    1)旧项目支持ios系统

    基本使用XML

    旧项目很有可能通信已经使用WebService

    2)中小型项目ios/android先开展的

    一上来很有可能采用JSON

    3)特殊情况

    XML里嵌套JSON

    <menu data="{'title'='Open','arthority'='2'}"></menu>

     

    JSONios下的解析

    1NSJSONServ...

    NSArray/NSDictionary  <->  JSON String

    练习:

    JSON转换为实体对象

    [

        {

            "name" : "三桑",

            "age" : 8,

            "phoneNumber" : "911"

        },

        {

            "name" : "安卓",

            "age" : 10,

            "phoneNumber" : "912"

        }  

    ]

    Person

    新浪微博API

    open.weibo.com -> 文档 -> 微博API -> 微博接口 -> statues/home_timeline

     

    JSONPlist区别

    JSON                           Plist

    跨语言跨平台               苹果平台自己使用

    JSON写的                   XML写的

    用于数据传输(C/S)       用于轻量存储/应用配置

     

    <><><><><><><><><><><><><><><><><><> 

    应用程序的生命周期

    1)对象的生命周期

        init dealloc ...

    2ViewController的生命周期

        viewDidLoad

        viewWillAppear...

    3View的生命周期

        drawRect:

        layoutSubviews:

    4)应用程序的生命周期

        application:didFinishLaunchingWithOptions:
    应用程序生命周期干什么?

        负责在应用程序发生一些事件时,调用相关消息

    事件 <-> 应用程序状态的改变

     

    应用程序的状态

    在文档中搜索ios app programming

    由操作系统导致的闹铃,购买等状况,应用程序会进入非活动状态Inactive

    1Not runing非运行态(没打开)

    2Inactive非活动态(暂停)

    从属于前台

    active->inactive停留在非活动态

    程序被暂停,程序依然能被使用者看见,

    情况1

    程序中央有一个巨大的操作系统级别的对话框,

    比如一个闹铃、一个购买提示、通知(特指用户设置在中央显示的通知)、

    // 通知有三种样式:状态栏、中央、不显示

    情况2

    用户点击两下home

     

    经过inactive

    Not running / active / background 互相切换

     

    active活动态(运行时)

    从属于前台,应用程序在运行

     

    background后台态(被关了)

    用户并没有操作你当前程序

    你的程序可以申请10分钟后台执行代码

     

    Suspended挂起态

    你的程序即将被销毁(从内存中移除)

    APP_Lifecycle

     

    #import "MXAppDelegate.h"

     

    @implementation MXAppDelegate

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    {

        // Override point for customization after application launch.

    //  非运行态->非活动态(打开时)

        // 干什么:

        //   配置模型  初始化模型

        //   配置第三方框架信息

        //   如果没有使用storyboard就要初始化rootViewController

        //   * 应用间通信

        //   * 处理通知

        NSLog(@"didFinishLaunchingWithOptions");

        returnYES;

    }

     

    - (void)applicationWillResignActive:(UIApplication *)application

    {

        // 活动态 -> 非活动态(暂停)

        // 干什么:

        //   暂停游戏

        //   暂停各种Timer

        NSLog(@"applicationWillResignActive");

    }

     

    - (void)applicationDidEnterBackground:(UIApplication *)application

    {

        // 非活动态 -> 后台态(被关闭)

        // 干什么:

        //   释放各种资源

        //   各种收场 (申请后台操作)如当前要下载多个文件,赶快下载最后一个文件,其他就不下载了

        //   提示服务器 (申请后台操作)如用户当前不在线

        //   保存文件

        // 如果进行后台操作的申请

        //   1.向操作系统请求后台运行,并获取后台运行任务码

        self.backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^{ // Expiration过期

            // 在后台运行任务到期时运行这个代码块

            // 4.处理在时间结束后,后台任务仍然没有做完的情况

            [application endBackgroundTask:self.backgroundTaskIdentifier];

            NSLog(@"applicationDidEnterBackground");

        }];

        //   2.使用另外一个线程,执行后台运行代码

        dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); // 0 这个参数没有用

        dispatch_async(queue, ^{

            // 后台运行的代码写在这

            for (int i = 0; i < 1000; i++) {

                NSLog(@"%d", i);

                [NSThreadsleepForTimeInterval:1];

                // 当前应用程序在后台被系统杀掉前还剩几秒

                NSLog(@"time:%.2f", [application backgroundTimeRemaining]);

                if ([application backgroundTimeRemaining] > 10) {

                    //...

                }else{

                    //...

                }

            }

            //   3.告知操作系统后台任务执行结束

            [application endBackgroundTask:self.backgroundTaskIdentifier];

            NSLog(@"applicationDidEnterBackground");

        });

    }

     

    - (void)applicationWillEnterForeground:(UIApplication *)application

    {

        // 后台态 -> 前台态

        // 干什么:

        //   继续下载

        //   提示服务器用户在线

        NSLog(@"applicationWillEnterForeground");

    }

    - (void)applicationDidBecomeActive:(UIApplication *)application

    {

    // 调用时机:非活动态 -> 活动态

        // 恢复游戏

        // 恢复各种Timer

        NSLog(@"applicationDidBecomeActive");

    }

     

    - (void)applicationWillTerminate:(UIApplication *)application

    {

        NSLog(@"applicationWillTerminate");

    }

     

    @end

  • 相关阅读:
    Vue 目录
    【SVN】彻底 svn 服务器上的 删除某一个文件或文件夹
    【Linux】安装 PostgreSQL
    【Linux】安装 node.js
    在vue中使用echarts图表
    Grunt搭建自动化web前端开发环境--完整流程
    JavaScript 开发规范
    React设计思想
    js闭包的理解
    pytharm安装第三方库
  • 原文地址:https://www.cnblogs.com/yangmx/p/3674810.html
Copyright © 2020-2023  润新知