成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深入iOS 5:解析兩大隱藏特性

移動開發 iOS
iOS 5的明星特性們相信各位已經耳熟能詳了,像無線升級、iMessage、Siri等等。但接下來,本文作者Bill Dudney介紹的兩個特性絕對值得開發者深入了解,有助于開發出更NB的Apps,帶來打出隱藏Boss的快感。

JSON序列化

iOS 5加入了NSJSONSerialization類,可以將JSON和Foundation objects相互轉換。來看一段圖片的代碼示例:

  1. {"taken": "2011/07/13"
  2. "width": "3072",
  3. "height": "2304",
  4. "latitude": "39.52",
  5. "longitude": "-106.05",
  6. "url": "http://mypictures.com/12345.png"

解析起來很簡單,代碼示例:

  1. NSError *error = nil;
  2. NSData *data = [NSData dataWithContentsOfURL:webServiceURL];
  3. NSDictionary *photo = [NSJSONSerialization
  4. JSONObjectWithData:data
  5. options:NSJSONReadingMutableLeaves
  6. error:&error];
  7. NSNumber *width = [photo objectForKey:@"width"];
  8. NSNumber *height = [photo objectForKey:@"height"]; 

齊活兒。不要另外去下載類庫啊啥的,示例中的JSONOBjectWithData:options:error:方法具體是將數據參數轉向NSDictionary。

NSJSONSerialization可以很容易的將數據解析到內存或者Stream里,對于大數據來說,用Stream的優勢更明顯,可以將數 據分塊來一點點的處理掉,從而使得內存資源得到盡量***的占用。再看一段示例,同上一段不同的是這次使用了JSONOBjectWithStream: variant方法:

  1. NSError *error = nil;
  2. NSStream *stream = [self getMyStream];
  3. NSDictionary *photo = [NSJSONSerialization
  4. JSONObjectWithStream:stream
  5. options:NSJSONReadingMutableLeaves
  6. error:&error];
  7. NSNumber *width = [photo objectForKey:@"width"];
  8. NSNumber *height = [photo objectForKey:@"height"]; 

iOS對JSON的支持甚至更進了一步,可以產生JSON數據。

ARC(自動引用計數)

很多用慣了有垃圾回收機制開發語言的開發者,用Objective-C會很不習慣,總是要進行很多內存管理的工作。蘋果覺得垃圾回收這種嚴重影響電源使用效率的特性,同移動設備天生的實時性是相沖突的。但是在iOS 5當中蘋果引入了自動內存管理機制,稱作ARC。

為了解決保留/釋放內存管理,ARC加入了一個新的概念稱作“歸零弱引用”,弱引用一旦不再沒引用機會被清零。至此所有弱引用不再會指向懸擺指針,而是被自動清理掉。

如果你用ARC,那么必須向編譯器聲明你用Core Foundation對象干嗎,否則會報錯。先看一個可以導致報錯的例子:

  1. NSDictionary *values =
  2.         [NSDictionary dictionaryWithObject:@"object" forKey:@"key"];
  3.  dictionary = (CFDictionaryRef)values;
  4. SomeFunctionCallThatNeesACFDictionary(dictionary); 

如果只是想用dictionary作為CFDictionaryRef類,只需加一個 __bridge 就可以來。再來看正確的示例:

  1.   NSDictionary *values =
  2.         [NSDictionary dictionaryWithObject:@"object" forKey:@"key"];
  3. CFDictionaryRef dictionary = (__bridge CFDictionaryRef)values;
  4. SomeFunctionCallThatNeesACFDictionary(dictionary);
  5. NSDictionary *values =
  6.         [NSDictionary dictionaryWithObject:@"object" forKey:@"key"];
  7. CFDictionaryRef dictionary = (__bridge CFDictionaryRef)values;
  8. SomeFunctionCallThatNeesACFDictionary(dictionary); 
責任編輯:佚名 來源: pragprog
相關推薦

2011-07-01 10:42:51

IIS解析漏洞

2011-06-08 08:43:30

2010-09-14 17:27:12

DIV CSS定位

2010-07-15 14:25:06

Perl時間函數

2017-11-27 13:18:08

Cydia源iOSiPad

2010-07-15 09:49:23

Perl標量

2024-05-11 07:57:47

因果推斷知識地圖算法

2021-12-16 11:34:13

云計算軟件技術

2009-11-30 16:55:10

微軟合作Novell

2012-02-01 09:59:05

TitaniumPhoneGapiOS

2012-05-24 09:29:28

虛擬化ESG服務器虛擬化

2021-07-27 22:34:09

iOS蘋果系統

2010-09-17 16:18:43

Java內存溢出

2010-05-04 14:30:45

Oracle數據

2011-08-10 08:55:28

項目失敗

2011-06-21 10:48:43

網絡布線布線電磁

2021-09-10 10:23:29

數字化

2011-08-11 09:41:38

2020-11-11 12:18:22

ATT&CK網絡攻擊安全威脅

2010-04-01 09:34:06

Oracle函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 风间由美一区二区三区在线观看 | 成人精品一区 | 欧美成人手机在线 | 青青草这里只有精品 | 亚洲视频免费在线播放 | 久久高清| 成人h视频在线 | 成人一区二区三区 | 亚洲久视频 | 久久久91精品国产一区二区三区 | 国产视频在线观看一区二区三区 | 中午字幕在线观看 | 欧美一区二区免费 | 亚洲精品乱码8久久久久久日本 | 成人免费视频在线观看 | 又黄又色 | 四虎成人av | 久久久久久av | 亚洲a一区二区 | 日韩精品一区二区三区高清免费 | 黑人巨大精品 | 伊人99| 日韩一区二区三区在线播放 | 国产一级在线观看 | www.四虎.com| 成人在线视频网 | 91在线成人 | 无码一区二区三区视频 | 亚洲第一女人av | 成人av电影在线观看 | av资源网站 | 精品久久久久国产免费第一页 | 亚洲一区二区三区视频 | 亚洲精品免费视频 | 国产精品夜夜春夜夜爽久久电影 | 日韩精品在线看 | 视频二区 | 欧美日韩高清 | 国产欧美一区二区三区日本久久久 | 日韩日韩日韩日韩日韩日韩日韩 | 亚洲欧美在线一区 |