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

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

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

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

}

]

JSON和XML的对比

JSON                                           XML

更轻量                                      更高功能

文件小                                      文件大

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

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

JSON与XML的使用

1)旧项目支持ios系统

基本使用XML

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

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

一上来很有可能采用JSON

3)特殊情况

XML里嵌套JSON

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

JSON在ios下的解析

1)NSJSONServ...

NSArray/NSDictionary  <->  JSON String

练习:

把JSON转换为实体对象

[

{

"name" : "三桑",

"age" : 8,

"phoneNumber" : "911"

},

{

"name" : "安卓",

"age" : 10,

"phoneNumber" : "912"

}

]

Person类

新浪微博API

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

JSON与Plist区别

JSON                           Plist

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

JSON写的                   XML写的

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

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

应用程序的生命周期

1)对象的生命周期

init dealloc ...

2)ViewController的生命周期

viewDidLoad

viewWillAppear...

3)View的生命周期

drawRect:

layoutSubviews:

4)应用程序的生命周期

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

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

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

应用程序的状态

在文档中搜索ios app programming

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

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

2)Inactive非活动态(暂停)

从属于前台

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

14 - XML、JSON、PLIST对比和APP生命周期的更多相关文章

  1. 微信小程序-APP生命周期与运行机制

    QQ讨论群:785071190 开发微信小程序之前需要先了解微信小程序运行机制以及其生命周期,小程序APP生命周期需要先从app.js这个文件开始. 阅读过"微信小程序-代码构成" ...

  2. 微信小程序APP生命周期

    小程序APP生命周期需要先从app.js这个文件开始,App() 必须在 app.js 中调用,必须调用且只能调用一次,app.js中定义了一些应用的生命周期函数 onLaunch----当小程序初始 ...

  3. 微信APP生命周期、页面生命周期

    目录 小程序的启动流程 app生命周期 页面的生命周期 页面的生命周期(图) 小程序的启动流程 我们画一个图来表示一下,整个小程序的启动流程,我们就知道了: app生命周期 执行App()函数也就是注 ...

  4. iOS进阶——App生命周期

    State Description Not running The app has not been launched or was running but was terminated by the ...

  5. ecos的app生命周期

    5种变迁,安装.更新.启动.暂停.卸载,每个app都可以自行维护每种变迁 方法简单,只需要在app/$app_name目录下定义task.php文件 <?php class desktop_ta ...

  6. ios app 生命周期

    https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/The ...

  7. app生命周期之即将关闭

    需求:当软件正在进行任务还未结束时,如果用户强制退出软件,需要将一些数据进行保存等处理. 策略:当用户使用多任务将软件挂起,并滑掉软件时,接下来有5妙钟的时间留给软件做处理.会调用- (void)ap ...

  8. OS开发之旅之App的生命周期【转载】

    原文链接 http://www.360doc.com/content/15/0918/14/27799428_499912639.shtml 在iOS App中,入口函数并不在根目录下,而是在“Sup ...

  9. Flutter--Flutter中Widget、App的生命周期

    前言 在App的开发过程中,我们通常都需要了解App以及各个页面的生命周期,方便我们在App进入前台时启动一些任务,在进入后台后暂停一些任务.同时,各个页面的生命周期也很重要,每个页面消失时要做一些内 ...

随机推荐

  1. 怎么取消 Windows Server 2012 RDP 限制每个用户只能进行一个会话

    在 Windows Server 2008 / 2008 R2 上,如果希望多个远程用户使用同一个账号同时访问服务器的 Remote Desktop(RDP),只需通过管理工具-远程桌面下的“远程桌面 ...

  2. Spring源码地址和相关介绍的网址

    Spring源码地址下载: https://github.com/spring-projects/spring-framework/tags >多图详解Spring框架的设计理念与设计模式:ht ...

  3. 转:不会定义jQuery插件,不要说会jQuery

    一:导言 有些WEB开发者,会引用一个JQuery类库,然后在网页上写一写$("#"),$("."),写了几年就对别人说非常熟悉JQuery.我曾经也是这样的人 ...

  4. XPath与多线程爬虫

    XPath是一门在xml中查询信息的语言安装使用XPath 1.安装lxml库 window:pip install lxmllinux:sudo pip install lxml国内安装缓慢,建议到 ...

  5. 第三种:NSOperationQueue

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...

  6. ARP地址解析协议

    ARP地址解析协议:为IP地址到相应的硬件地址之间提供动态映射. 下面图为例说明地址解析协议的详细工作流程. 结合图中的序号进行说明. client通过FTP协议连接server时,首先解析器会把主机 ...

  7. android -- 蓝牙 bluetooth (二) 打开蓝牙

    4.2的蓝牙打开流程这一部分还是有些变化的,从界面上看蓝牙开关就是设置settings里那个switch开关,widget开关当然也可以,起点不同而已,后续的流程是一样的.先来看systemServe ...

  8. 记录一次SQL查询语句

    以前发现比较经典的句子,都是记录在电脑上,我今天想搬到博客上,在我看来,写博客真的是一件非常头疼的事,它是内心的一道坎,我必须得跨过它. CREATE TABLE t_jeff ( id int NO ...

  9. 【Oracle】wmsys.wm_concat函数字段值为空

    这个是因为字符集的问题,和空值是没关系的.其实已经取到了数据,可以验证一下返回的不是0,但是由于这个里面有个chr(0)字符,而且可能第一个字符就是chr(0),所以就显示得怪异的空现象.至于为何会出 ...

  10. 小猪猪逆袭成博士之C++基础篇(三)字符串

    小猪猪逆袭成博士之C++基础篇(三)字符串 String 写在题外的话: 非常感谢在我发了第一篇随笔以后有很多人看还评论了,这大概就是一种笔记性质的,也不一定全对,如果不对的地方请指出来让我加以改正. ...