欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡單介紹iOS開發(fā)中關(guān)于category的應(yīng)用

 更新時(shí)間:2015年09月28日 09:42:45   作者:悠悠  
這篇文章主要介紹了iOS開發(fā)中關(guān)于category的應(yīng)用,代碼仍然基于傳統(tǒng)的Objective-C,需要的朋友可以參考下

創(chuàng)建category文件:

這里,一定要選好base的class, 如下:

無論一個(gè)類設(shè)計(jì)的如何完美,都不可避免的會遇到?jīng)]有預(yù)測到的需求,那怎么擴(kuò)展現(xiàn)有的類呢?當(dāng)然,繼承是個(gè)不錯(cuò)的選擇。但是Objective-C提供了一種 特別的方式來擴(kuò)展類,叫Catagory,可以動態(tài)的為已經(jīng)存在的類添加新的行為。這樣可以保證類的原原來的基礎(chǔ)上,較小的改動就可以增加需要的功能。使 用Category對類進(jìn)行擴(kuò)展時(shí),不需要訪問其源代碼,也不需要?jiǎng)?chuàng)建子類,這樣我們可以擴(kuò)展系統(tǒng)提供的類。Category使用簡單的方式,實(shí)現(xiàn)了類的相關(guān)方法的模塊化,把不同的類方法分配到不同的分類文件中。

通過一個(gè)簡單的例子看看Category如何使用。

現(xiàn)在我們有一個(gè)類叫MyClass

復(fù)制代碼 代碼如下:

#import  
 
@interface MyClass : NSObject 
-(void) myPrint; 
@end 
#import "MyClass.h" 
 
@implementation MyClass 
-(void) myPrint{ 
    NSLog(@"myPrint 調(diào)用了"); 

@end 

它有一個(gè)實(shí)例方法:myPrint,待會我們可以在擴(kuò)展后調(diào)用它

 

好了,有了上面的MyClass后,我們要在不增加子類,不修改MyClass類的情況下增加一個(gè)HelloWorld的方法,怎么添加呢?只需添加兩個(gè)文件MyClass+HelloWorld.h  和 MyClass+HelloWorld.m。

在聲明文件和實(shí)現(xiàn)文件中用“()”把Category的名稱括起來。原類名+Category”的這是約定的文件命名方式。

看看這兩個(gè)文件怎么實(shí)現(xiàn),在Xcoed上按Command+N,新建文件,選擇Objective-C category方式創(chuàng)建類,這樣Xcode會自動幫你創(chuàng)建約定命名方式的文件。

Category on的類是MyClass,選對了哦

這樣Xcode就幫你創(chuàng)建了MyClass+HelloWorld.h  和 MyClass+HelloWorld.m這兩個(gè)文件了。

那么我們現(xiàn)在添加一個(gè)HelloWorld方法??纯磳?shí)現(xiàn)后的代碼如下:

 

復(fù)制代碼 代碼如下:

#import "MyClass.h" 
 
@interface MyClass (HelloWorld) 
-(void)HelloWorld; 
@end 
#import "MyClass+HelloWorld.h" 
 
@implementation MyClass (HelloWorld) 
-(void)HelloWorld{ 
    NSLog(@"你好 倫敦奧運(yùn)!"); 

@end 

在main中調(diào)用
復(fù)制代碼 代碼如下:

 MyClass *myclass = [[[MyClass alloc]init]autorelease]; 

[myclass HelloWorld]; 
[myclass myPrint]; 


 

運(yùn)行打印結(jié)果:

復(fù)制代碼 代碼如下:

 2012-08-09 11:24:16.697 objectiveC[16053:403] 你好 倫敦奧運(yùn)! 

2012-08-09 11:24:16.699 objectiveC[16053:403] myPrint 調(diào)用了 


 

那的Category的使用場景有那些呢:

1、類包含了很多個(gè)方法實(shí)現(xiàn),而這些方法需要不同團(tuán)隊(duì)的成員來實(shí)現(xiàn)

2、當(dāng)你在使用基礎(chǔ)類庫中的類時(shí),你不想繼承這些類而只想添加一些方法時(shí)。

 

Category能實(shí)現(xiàn)上面的需求,當(dāng)然也有使用Category是需要注意的問題:

1、Category可以訪問原始類的實(shí)例變量,但不能添加實(shí)例變量,如果想添加變量,那就通過繼承創(chuàng)建子類來實(shí)現(xiàn)。

2、Category可以重載原始類的方法,不大不推薦這么做,這樣會覆蓋掉原始類的方法。如果確實(shí)要重載,那就通過繼承創(chuàng)建子類來實(shí)現(xiàn)。

3、和普通接口有所區(qū)別的是,在Category的實(shí)現(xiàn)文件中的實(shí)例方法只要你不去調(diào)用它你可以不用實(shí)現(xiàn)所有聲明的所有方法。

您可能感興趣的文章:

相關(guān)文章

  • IOS簡單實(shí)現(xiàn)瀑布流UICollectionView

    IOS簡單實(shí)現(xiàn)瀑布流UICollectionView

    這篇文章主要為大家介紹了IOS簡單實(shí)現(xiàn)瀑布流UICollectionView的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-01-01
  • iOS自定義UIDatepicker日期選擇器視圖分享

    iOS自定義UIDatepicker日期選擇器視圖分享

    下面小編就為大家分享一篇iOS自定義UIDatepicker日期選擇器視圖分享,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • IOS10 遠(yuǎn)程推送適配詳細(xì)介紹

    IOS10 遠(yuǎn)程推送適配詳細(xì)介紹

    這篇文章主要介紹了IOS10 遠(yuǎn)程推送適配詳細(xì)介紹的相關(guān)資料,iOS10推送新增了UserNotifications Framework,這里主要介紹如何實(shí)現(xiàn)遠(yuǎn)程推送,需要的朋友可以參考下
    2016-12-12
  • 將多個(gè)字符串高亮顯示之TTTAttributedLabel

    將多個(gè)字符串高亮顯示之TTTAttributedLabel

    本文介紹了將多個(gè)字符串高亮顯示之TTTAttributedLabel。在此需要對每個(gè)字符串進(jìn)行匹配,可以研究下kmp和bm算法,在這里應(yīng)用了oc自帶的NSRegularExpression 來進(jìn)行正則表達(dá)式匹配,算是比較簡單的方法,需要的朋友可以參考下
    2015-07-07
  • IOS 打包靜態(tài)庫詳細(xì)介紹

    IOS 打包靜態(tài)庫詳細(xì)介紹

    這篇文章主要介紹了IOS 打包靜態(tài)庫詳細(xì)介紹的相關(guān)資料,這里對打包靜態(tài)庫做了詳細(xì)的說明,并進(jìn)行了總結(jié),需要的朋友可以參考下
    2016-11-11
  • iOS Xcode自定義代碼塊及遷移的實(shí)現(xiàn)方法

    iOS Xcode自定義代碼塊及遷移的實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于iOS Xcode自定義代碼塊及遷移的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用iOS Xcode具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • iOS體驗(yàn)性優(yōu)化之RTL適配右滑返回的實(shí)現(xiàn)

    iOS體驗(yàn)性優(yōu)化之RTL適配右滑返回的實(shí)現(xiàn)

    這篇文章主要給大家介紹了關(guān)于iOS體驗(yàn)性優(yōu)化之RTL適配右滑返回實(shí)現(xiàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • iOS開發(fā)中使用UILabel設(shè)置字體的相關(guān)技巧小結(jié)

    iOS開發(fā)中使用UILabel設(shè)置字體的相關(guān)技巧小結(jié)

    這篇文章主要介紹了iOS開發(fā)中UILabel設(shè)置字體的相關(guān)技巧小結(jié),代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2016-01-01
  • IOS 中runtime使用方法整理

    IOS 中runtime使用方法整理

    這篇文章主要介紹了IOS 中runtime使用方法整理的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • IOS Xcode調(diào)試常用命令和斷點(diǎn)整理

    IOS Xcode調(diào)試常用命令和斷點(diǎn)整理

    這篇文章主要介紹了IOS Xcode調(diào)試常用命令和斷點(diǎn)整理的相關(guān)資料,這里對IOS Xcode調(diào)試常用命令進(jìn)行了總結(jié),需要的朋友可以參考下
    2016-12-12

最新評論