iOS類(lèi)別和擴(kuò)展_第1頁(yè)
iOS類(lèi)別和擴(kuò)展_第2頁(yè)
iOS類(lèi)別和擴(kuò)展_第3頁(yè)
iOS類(lèi)別和擴(kuò)展_第4頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、iOS 類(lèi)別和擴(kuò)展( Categories 和 Extensions )分類(lèi)( Category)分類(lèi)能夠做到的事情主要是:即使在你不知道一個(gè)類(lèi)的源碼 情況下,向這個(gè)類(lèi)添加擴(kuò)展的方法。此外,分類(lèi)能夠保證你的實(shí)現(xiàn)類(lèi)和其他的文件區(qū)分開(kāi)。 1#import “ UIViewController.h ”2 interface UIViewController ( CustomView )3 -( void ) extMethod ;4 end使用分類(lèi)為類(lèi)添加方法( Add Methods to Classes )通過(guò)在 interface 中聲明一個(gè)額外的方法并且在 implementation 中定

2、義相同名字的方法即可。 分類(lèi)的名字 (也 就是括號(hào)括起來(lái)的 CustomView )表示的是:對(duì)于聲明于其 他地方的這個(gè)類(lèi)( UIViewController ),在此處添加的方法是 額外的,而不是表示這是一個(gè)新的類(lèi)。你不可以通過(guò)分類(lèi)為 一個(gè)類(lèi)添加額外的成員變量。在 implementation 中,引入頭文件的時(shí)候主要引用的方式是:1 #import “ UIViewController+CustomView.h ”2 implementation UIViewController ( CustomView )3 -( void ) extMethod ;4 end另外,雖然 Categor

3、y 不能夠?yàn)轭?lèi)添加新的成員變量,但是Category 包含類(lèi)的所有成員變量,即使是 private 的。Category 可以重新定義新方法,也可以 override 繼承過(guò)來(lái)的 方法。類(lèi)擴(kuò)展( Class Extensions)類(lèi)擴(kuò)展就像匿名(也就是沒(méi)有那個(gè)括號(hào)里面的名字CustomView )的分類(lèi)一樣,除了一樣不同的是,類(lèi)擴(kuò)展聲明 必須在 implementation 在實(shí)現(xiàn)。先看一段代碼: 1 interface MyObject:NSObject2 3 NSNumber* number;4 5 -(NSNumber*)getNum;6 end78 interface MyObject

4、(Setter)9 -(void)setNum:(NSNumber*)num;10 end1112 implementation MyObject13 -(NSNumber*)getNum14 15 return number;16 看上面這段代碼,有沒(méi)有問(wèn)題?編譯器編譯的時(shí)候,這段代碼是可以編譯通過(guò),但當(dāng)運(yùn)行時(shí),就會(huì)報(bào)錯(cuò)。為什么? 因?yàn)闆](méi)有實(shí)現(xiàn) Category 中的 setNum 方法。而用類(lèi)擴(kuò)展去實(shí) 現(xiàn),請(qǐng)看: 1 interface MyObject:NSObject2 3 NSNumber* number;4 5 -(NSNumber*)getNum;6 end78 interfac

5、e MyObject() / 注意這里的括號(hào)里面是沒(méi)有名字 的9 -(void)setNum:(NSNumber*)num;10 end1112 implementation MyObject13 -(NSNumber*)getNum14 15 return number;16 1718 -(void)setNum:(NSNumber*)num19 20 number = num;21 22 endsetNum 是必須要實(shí)現(xiàn),不然編譯器會(huì)提出警告。從上面看出,分類(lèi)和類(lèi)擴(kuò)展的相似之處是:都可以為類(lèi)添加 一個(gè)額外的方法;不同之處在于:要添加額外方法,分類(lèi)必須在第一個(gè)interface 中聲明方法, 并且在 implementation 中提供實(shí)現(xiàn), 不然運(yùn)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論