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. 对象图(Object Diagram)—UML图(三)

    一.用一张图来介绍一下对象图的基本内容 二.对象图与类图的基本差别 三.对象图实例

  2. 去除List列表中反复值(稍作调整,也适合于List&lt;T&gt; 和 List&lt;?&gt;)

    方法一 循环元素删除 [c-sharp] view plaincopy public static void removeDuplicate(List list) { for ( int i = 0  ...

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

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

  4. 新建linux组、用户命令

    之前在安装oracle的时候,出现了一个问题:安装Oracle,新建组.用户的时候的一个错误.看这篇博客前,先看这个链接,学习要从解决出现的问题出手. 建立用户组和用户 下面总结一下Linux建立组和 ...

  5. Sublime Text 2使用技巧汇总

    一.下载链接: Windows-64bit: http://pan.baidu.com/s/1o6QdKYu 其它版本请移步官网: http://www.sublimetext.com/ 二.破解Li ...

  6. 转:触屏中的js事件

    一.触摸事件 ontouchstartontouchmoveontouchendontouchcancel 目前移动端浏览器均支持这4个触摸事件,包括IE.由于触屏也支持MouseEvent,因此他们 ...

  7. Sicily-1006

    一.  题意 这道题就是考排列组合吧,再来就是比较一下字符的下标算一下两个ranking的距离.然后我总结了一个排列和一个组合的实现方法,这道题直接用的是stl 里面的next_permutation ...

  8. 最小生成树Prim算法

    文章作者:甘航  文章来源:http://www.cnblogs.com/ganhang-acm/转载请注明,谢谢合作. 由于数据结构老师布置的一道题 ,我看prim算法看了半天还是一知半解. 在浏览 ...

  9. Threejs 官网 - Three.js 的图形用户界面工具(GUI Tools with Three.js)

    Threejs 官网 - Three.js 的图形用户界面工具(GUI Tools with Three.js) 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) ...

  10. X Window System介绍

    1.概述     X Window System是1984年由麻省理工学院(MIT)和DEC公司共同开发研究的,是执行在UNIX系统上的视窗系统.严格地说,X Window System并非一个软件, ...