@interface 、 @implementation淆院,Category何乎、Extension

@interface 、 @implementation

  • OC中的類必須包括兩部分土辩,interface部分和implementation部分支救,這才是oc中的一個類的完整聲明;
  • OC中將成員變量和成員方法的聲明部分放置在interface部分中拷淘,包括繼承關系各墨,protocal實現(xiàn)關系,都在interface里面的頭部進行聲明辕棚。
  • 然后將實現(xiàn)部分放置在implementation部分中欲主,相當于是將類拆分成聲明和實現(xiàn)兩部分,這兩部分缺一不可逝嚎。

@property 和@synthesize

  • @property 關鍵字可以自動生成某個成員變量的setter和getter方法的聲明
    @property int age;
    編譯時遇到這一行,則自動擴展成下面兩句:
    -(void)setAge:(int)age;
    -(int)age;
  • @synthesize關鍵字
    @synthesize關鍵字幫助生成成員變量的setter和getter方法的實現(xiàn)详恼。
    語法:@synthesize age=_age;
    相當于下面的代碼:
    -(void)setAge:(int)age
    {
    _age=age;
    }
    -(int)age
    {
    Return _age;
    }

Category分類 和 類的延展Extension

category:類別是一種為現(xiàn)有的類添加新方法的方式补君。
  • 創(chuàng)建方式如下:
  • 生成如下:


  • 在@interface中添加類的方法,但是不能添加成員變量或?qū)傩悦粱ァ5@種說話不嚴謹挽铁。
  • 我們知道在一個類中用@property聲明屬性,編譯器會自動幫我們生成成員變量和setter/getter敞掘,但分類的指針結(jié)構體中叽掘,根本沒有屬性列表。所以在分類中用@property聲明屬性玖雁,既無法生成_成員變量也無法生成setter/getter更扁。
  • OC是動態(tài)語言,方法真正的實現(xiàn)是通過runtime完成的,雖然系統(tǒng)不給我們生成setter/getter浓镜,但我們可以通過runtime手動添加setter/getter方法溃列。
#import "MBProgressHUD.h"

@interface MBProgressHUD (kekeke)
//方法
+ (void)showSuccess:(NSString *)success;
//屬性
@property(nonatomic,copy) NSString *nameWithSetterGetter;
@end

#import "MBProgressHUD+kekeke.h"

@implementation MBProgressHUD (kekeke)
//實現(xiàn)的類方法
+ (void)showSuccess:(NSString *)success {
}
//通過runtime手動添加setter/getter方法。
- (void)setNameWithSetterGetter:(NSString *)nameWithSetterGetter {
        objc_setAssociatedObject(self, &nameWithSetterGetterKey, nameWithSetterGetter, OBJC_ASSOCIATION_COPY);
}
- (NSString *)nameWithSetterGetter {
    return objc_getAssociatedObject(self, &nameWithSetterGetterKey);
}

@end
Extension : 首先還是需要創(chuàng)建相關類的擴展膛薛,即方法的聲明听隐,然后在需要擴張的類中引入頭文件,然后實現(xiàn)聲明的方法哄啄。
  1. 使用類似 分類的方式定義頭文件雅任,但是沒有實現(xiàn)類,而是寫在原始實現(xiàn)類.m中

PersonExtend.h

#import "Person.h"  
  
@interface Person () //() 一般不指定名字  
- (void) smile; //聲明  
@end  

2.在Person.m 引入PersonExtend.h 咨跌,并實現(xiàn)方法沪么, 方法即為私有的。

Person.m

#import "Person.h"  
#import "PersonExtend.h"  
@interface Person (extension) //這里的@interface ... @end 可省略虑润,但不建議成玫。方便看出哪些是私有的方法  
- (void) smile; //聲明  
@end  
@implementation Person  
- void smile  
{  
  //在其他公有方法中,使用 [self smile] 調(diào)用  
}  
@end  
Category 與Extension 的區(qū)別
  • 形式上看:extension 是匿名的category
  • extension中聲明的方法需要在mainimplementation中實現(xiàn)拳喻,而category 不做強制要求
  • extension 可以添加屬性哭当、成員變量,而category 一般不可以冗澈。
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钦勘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子亚亲,更是在濱河造成了極大的恐慌彻采,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捌归,死亡現(xiàn)場離奇詭異胆筒,居然都是意外死亡,警方通過查閱死者的電腦和手機星著,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門黔姜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人巾兆,你說我怎么就攤上這事猎物。” “怎么了角塑?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵蔫磨,是天一觀的道長。 經(jīng)常有香客問我圃伶,道長堤如,這世上最難降的妖魔是什么蒲列? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮煤惩,結(jié)果婚禮上嫉嘀,老公的妹妹穿的比我還像新娘。我一直安慰自己魄揉,他們只是感情好剪侮,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著洛退,像睡著了一般瓣俯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上兵怯,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天彩匕,我揣著相機與錄音,去河邊找鬼媒区。 笑死驼仪,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的袜漩。 我是一名探鬼主播绪爸,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼宙攻!你這毒婦竟也來了奠货?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤座掘,失蹤者是張志新(化名)和其女友劉穎递惋,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溢陪,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡萍虽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了形真。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贩挣。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖没酣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卵迂,我是刑警寧澤裕便,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站见咒,受9級特大地震影響偿衰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一下翎、第九天 我趴在偏房一處隱蔽的房頂上張望缤言。 院中可真熱鬧,春花似錦视事、人聲如沸胆萧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽跌穗。三九已至,卻和暖如春虏辫,著一層夾襖步出監(jiān)牢的瞬間蚌吸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工砌庄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留羹唠,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓娄昆,卻偏偏與公主長得像佩微,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子稿黄,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Objective-C 1. import的用法 拷貝文件內(nèi)容可以自動防止文件的內(nèi)容被重復拷貝(#define宏定...
    馬文濤閱讀 5,338評論 3 17
  • 一只舊舊的新新的匣喊衫, 閃著光芒, 掩著蛛網(wǎng)杆怕, 跳躍著淚花族购, 灑落著星光。 人人都好奇她的真實形狀陵珍, 試探寝杖,猜測,判...
    G鷥閱讀 471評論 0 2
  • 可愛乖寶寶終于睡覺了互纯,還有一個大崽崽在玩玩具瑟幕。 每天都是這樣過,不知道別人的生活是不是也是重復留潦。突然想起一句話:一...
    文稻田芯閱讀 245評論 1 3
  • 剛看了個小故事只盹,在唐僧取經(jīng)的團隊中,如果不得已裁員兔院,你會選擇裁去哪個殖卑?? 我仔細想了想坊萝,唐僧相當于項目經(jīng)理孵稽,有點啰...
    丁鐺鐺閱讀 321評論 0 1
  • 大中午頂著暴曬的太陽 用放大鏡向太陽借了眼睛和嘴巴 最后胡亂繪制了一幅抽象畫 我閑嗎许起? 不,我只是想探究一下太陽賜...
    水筆仔o12530閱讀 706評論 0 1