


下載本文檔
版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)生評(píng)教與反饋實(shí)施方案計(jì)劃
- 靜脈治療報(bào)告
- 統(tǒng)編版小學(xué)語(yǔ)文二年級(jí)下冊(cè)《語(yǔ)文園地三》精美課件
- 第四單元 《平行四邊形的認(rèn)識(shí)》教學(xué)設(shè)計(jì)-2024-2025學(xué)年四年級(jí)數(shù)學(xué)上冊(cè)青島版(五四學(xué)制)
- 養(yǎng)老床位建設(shè)服務(wù)方案(技術(shù)方案)
- 老年骨折手術(shù)護(hù)理
- 放射科護(hù)理相關(guān)知識(shí)課件
- 培訓(xùn)課件知識(shí)產(chǎn)權(quán)保護(hù)
- 2025年湛江道路客貨運(yùn)輸從業(yè)資格證模擬考試下載
- 2025年上海貨運(yùn)從業(yè)資格證模擬試題答案大全
- GB/T 912-2008碳素結(jié)構(gòu)鋼和低合金結(jié)構(gòu)鋼熱軋薄鋼板和鋼帶
- GB/T 15970.7-2000金屬和合金的腐蝕應(yīng)力腐蝕試驗(yàn)第7部分:慢應(yīng)變速率試驗(yàn)
- 中共一大會(huì)址
- 制度經(jīng)濟(jì)學(xué):05團(tuán)隊(duì)生產(chǎn)理論
- 作文格子紙(1000字)
- 刻度尺讀數(shù)練習(xí)(自制)課件
- 四年級(jí)下冊(cè)美術(shù)課件 4紙卷魔術(shù)|蘇少版
- 七年級(jí)數(shù)學(xué)蘇科版下冊(cè) 101 二元一次方程 課件
- ZL50裝載機(jī)工作裝置設(shè)計(jì)
- 2021年6月浙江省高考讀后續(xù)寫課件-高考英語(yǔ)復(fù)習(xí)備考
- 小學(xué)古詩(shī)詞80首(硬筆書(shū)法田字格)
評(píng)論
0/150
提交評(píng)論