【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】怎么在Objective-C中使用語(yǔ)法糖_第1頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】怎么在Objective-C中使用語(yǔ)法糖_第2頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】怎么在Objective-C中使用語(yǔ)法糖_第3頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】怎么在Objective-C中使用語(yǔ)法糖

今天就跟大家聊聊有關(guān)怎么在Objective-C中使用語(yǔ)法糖,可能很多人都不太了解,為了讓大家更加了解,在下給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。語(yǔ)法糖語(yǔ)法糖(Syntacticsugar),也譯為糖衣語(yǔ)法,是由英國(guó)計(jì)算機(jī)科學(xué)家彼得·約翰·蘭達(dá)(PeterJ.Landin)發(fā)明的一個(gè)術(shù)語(yǔ),指計(jì)算機(jī)語(yǔ)言中添加的某種語(yǔ)法,這種語(yǔ)法對(duì)語(yǔ)言的功能并沒(méi)有影響,但是更方便程序員使用?!S基百科需要聲明的是“語(yǔ)法糖”這個(gè)詞絕非貶義詞,它可以給我?guī)?lái)方便,是一種便捷的寫法,編譯器會(huì)幫我們做轉(zhuǎn)換;而且可以提高開(kāi)發(fā)編碼的效率。通常來(lái)說(shuō)使用語(yǔ)法糖能夠增加程序的可讀性,從而減少程序代碼出錯(cuò)的機(jī)會(huì),本文在簡(jiǎn)單的介紹OC語(yǔ)法糖的同時(shí)也會(huì)跟大家分享下我們使用過(guò)程中發(fā)現(xiàn)的'新'問(wèn)題。下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。語(yǔ)法糖的自白老班:為了傳達(dá)教育局和學(xué)校的教育精神我來(lái)講幾句。老班:下面我要講啦啊。老班:我要講的是教育局和學(xué)校剛傳達(dá)的規(guī)定。老班:最近校長(zhǎng)發(fā)現(xiàn)遲到學(xué)生越來(lái)越多。老班:為了維護(hù)教學(xué)秩序,學(xué)校制定了新校規(guī)。老班:小明:說(shuō)人話!老班:從明天起7點(diǎn)鐘準(zhǔn)時(shí)到校上課!老班巴拉巴拉講了一堆,其實(shí)只是要表達(dá)*從明天起7點(diǎn)鐘準(zhǔn)時(shí)到校上課!*雖然最終能表達(dá)出效果,但是老班說(shuō)的累小明們聽(tīng)著也煩。舉這個(gè)例子可能比較極端,至少我沒(méi)有遇到這么啰嗦的老師。但在編程語(yǔ)言中的確有不少讓程序員感到羅嗦的語(yǔ)法,讓人不能忍,這個(gè)時(shí)候語(yǔ)法糖就派上了用場(chǎng)。比如OC取數(shù)組元素:id

element

=

[array1

objectAtIndex:0];OC語(yǔ)法糖:你看,我是不是寫起來(lái)很方便?id

element

=

array1[0];OC語(yǔ)法糖:往下看,我還能做更多呢。OC語(yǔ)法糖@[]和@{}NSArray一般數(shù)組的初始化和訪問(wèn)數(shù)組元素是這樣的://

NSArray

alloc

初始化

NSArray

*array1

=

[[NSArray

alloc]

initWithObjects:@"a",

@"b",

@"c",

nil];

//

NSArray

的便捷構(gòu)造

NSArray

*array2

=

[NSArray

arrayWithObjects:@"1",

@"2",

@"3",

nil];獲取數(shù)組中的元素可以這樣的://

獲取相應(yīng)索引的元素

id

element

=

[array1

objectAtIndex:0];

NSLog(@"array1_count

=

%d,

array[0]

=

%@",[array1

count],

element);如果使用語(yǔ)法糖,可以這樣寫://

NSArray的定義

NSArray

*array

=

@[@"lu",

@"da",

@"shi",

@YES,

@123];

int

count

=

(int)[array

count];

for

(int

i

=

0;

i

<

count;

i++)

{

NSLog(@"%@",

array[i]);

}NSDictionary字典的初始化一般是這樣的:NSDictionary

*dictionay

=

[NSDictionary

dictionaryWithObjectsAndKeys:@"value1",

@"key1",

@"value2",

@"key2",

nil];

id

value

=

[dictionay

objectForKey:@"key1"];

NSLog(@"key1

=>

%@",

value);我們還可以這樣簡(jiǎn)化:NSDictionary

*dictionary

=

@{

@"key0"

:

@"value0",

@"key1"

:

@"value1",

@"key2"

:

@"value2"

};

NSLog(@"key2

=>

%@",

dictionary[@"key2"]);事實(shí)上[]和{}在JSON數(shù)據(jù)格式中最常見(jiàn)了,[]一般封裝一個(gè)數(shù)組,{}一般封裝一個(gè)整體對(duì)象。NSNumber一般寫法是這樣的:NSNumber

*intNumber

=

[NSNumber

numberWithInt:123];

NSNumber

*floatNumber

=

[NSNumber

numberWithFloat:12.3];

NSNumber

*charNumber

=

[NSNumber

numberWithChar:@('a')];語(yǔ)法糖簡(jiǎn)化寫法:NSNumber

*a

=

@123;

NSNumber

*b

=

@12.3;

NSNumber

*c

=

@('a');

NSLog(@"a

=

%@,

b

=

%@,

c

=

%@",

a,

b,

c);.點(diǎn)語(yǔ)法再用數(shù)組NSArray*array=@[@"lu",@"da",@"shi",@YES,@123];舉例。想要獲取數(shù)組中有多少個(gè)元素,我們平時(shí)都是怎么做的?[arraycount]還是array.count?老司機(jī)們思索片刻后說(shuō)到:好像都用過(guò),但是...我們知道在OC中[]和.分別代表調(diào)用方法和屬性,看申明明明是屬性呀,怎么可以用.方法?從OC2.0開(kāi)始只要符合系統(tǒng)默認(rèn)setter、getter書(shū)寫格式的方法都可以使用.點(diǎn)語(yǔ)法,屬性是一對(duì)getter、setter方法,點(diǎn)語(yǔ)法是屬性的另一種調(diào)用格式,就是語(yǔ)法糖方法。這么做的目的只有一個(gè),就是增加可讀性、兼容常見(jiàn)用法減少代碼報(bào)錯(cuò)!OC語(yǔ)法糖帶來(lái)的'坑'一般我們認(rèn)為語(yǔ)法糖帶來(lái)了方便,特別是對(duì)于字典的初始化直接是key:value的賦值方式比dictionaryWithObjectsAndKeys這種反人類的方式友好的多。但真的沒(méi)有其他什么問(wèn)題嗎?看下下面兩個(gè)定義及運(yùn)行結(jié)果:可見(jiàn)dictionaryWithObjectsAndKeys如果遇到value為nil的情況,后續(xù)key-value不會(huì)入庫(kù)直接當(dāng)做末尾nil結(jié)束初始化;而語(yǔ)法糖的方式就直接崩潰了,對(duì)崩潰了。所以使用語(yǔ)法糖還需要注意數(shù)據(jù)合法性問(wèn)題,nil會(huì)造成意外的崩潰哦!基本原理語(yǔ)法糖就是語(yǔ)言中的一個(gè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論