偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

JSON序列化

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

  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"

解析起來很簡(jiǎn)單,代碼示例:

  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"]; 

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

NSJSONSerialization可以很容易的將數(shù)據(jù)解析到內(nèi)存或者Stream里,對(duì)于大數(shù)據(jù)來說,用Stream的優(yōu)勢(shì)更明顯,可以將數(shù) 據(jù)分塊來一點(diǎn)點(diǎn)的處理掉,從而使得內(nèi)存資源得到盡量***的占用。再看一段示例,同上一段不同的是這次使用了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對(duì)JSON的支持甚至更進(jìn)了一步,可以產(chǎn)生JSON數(shù)據(jù)。

ARC(自動(dòng)引用計(jì)數(shù))

很多用慣了有垃圾回收機(jī)制開發(fā)語(yǔ)言的開發(fā)者,用Objective-C會(huì)很不習(xí)慣,總是要進(jìn)行很多內(nèi)存管理的工作。蘋果覺得垃圾回收這種嚴(yán)重影響電源使用效率的特性,同移動(dòng)設(shè)備天生的實(shí)時(shí)性是相沖突的。但是在iOS 5當(dāng)中蘋果引入了自動(dòng)內(nèi)存管理機(jī)制,稱作ARC。

為了解決保留/釋放內(nèi)存管理,ARC加入了一個(gè)新的概念稱作“歸零弱引用”,弱引用一旦不再?zèng)]引用機(jī)會(huì)被清零。至此所有弱引用不再會(huì)指向懸擺指針,而是被自動(dòng)清理掉。

如果你用ARC,那么必須向編譯器聲明你用Core Foundation對(duì)象干嗎,否則會(huì)報(bào)錯(cuò)。先看一個(gè)可以導(dǎo)致報(bào)錯(cuò)的例子:

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

如果只是想用dictionary作為CFDictionaryRef類,只需加一個(gè) __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); 
責(zé)任編輯:佚名 來源: pragprog
相關(guān)推薦

2011-07-01 10:42:51

IIS解析漏洞

2011-06-08 08:43:30

2010-07-15 14:25:06

Perl時(shí)間函數(shù)

2010-09-14 17:27:12

DIV CSS定位

2017-11-27 13:18:08

Cydia源iOSiPad

2010-07-15 09:49:23

Perl標(biāo)量

2024-05-11 07:57:47

因果推斷知識(shí)地圖算法

2021-12-16 11:34:13

云計(jì)算軟件技術(shù)

2009-11-30 16:55:10

微軟合作Novell

2012-02-01 09:59:05

TitaniumPhoneGapiOS

2012-05-24 09:29:28

虛擬化ESG服務(wù)器虛擬化

2010-05-04 14:30:45

Oracle數(shù)據(jù)

2011-08-10 08:55:28

項(xiàng)目失敗

2011-06-21 10:48:43

網(wǎng)絡(luò)布線布線電磁

2021-07-27 22:34:09

iOS蘋果系統(tǒng)

2010-09-17 16:18:43

Java內(nèi)存溢出

2021-09-10 10:23:29

數(shù)字化

2011-05-24 11:03:25

虛擬化

2012-02-07 12:59:26

IDC行業(yè)

2011-11-02 09:35:34

虛擬化虛擬化管理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)