09-property

property


@property基本使用


  • 背景: @porperty是一個編譯器指令, 在Xocde4.4之前, 可以使用@porperty來代替getter/setter方法的聲明, 也就是說我們只需要寫上@porperty就不用寫getter/setter方法的聲明, 由編譯器生成某一個屬性的getter/setter方法的聲明

Person.h中代碼示例

#import <Foundation/Foundation.h>
@interface Person : NSObject
{
    int _age;
}
//- (void)setAge:(int)age;
//- (int)age;
@property int age;//Xocde4.4之前, 相當(dāng)于上面兩句
@end

@synthesize基本使用


  • 背景: @synthesize是一個編譯器指令, 它可以簡化getter/setter方法的實現(xiàn)

  • 什么是實現(xiàn): 在聲明后面寫上大括號就代表著實現(xiàn)

  • 作用: 1.在@synthesize后面告訴編譯器, 需要實現(xiàn)哪個@property生成的聲明; 2. 告訴@synthesize, 需要將傳入的值賦值給誰和返回誰的值給調(diào)用者

Person.m中代碼示例

#import "Person.h"
@implementation Person
/*
    - (void)setAge:(int)age
    {
        _age = age;
    }
    - (int)age
    {
        return _age;
    }
*/
@synthesize age = _age;//等價于上面的兩個方法
//注意:如果在@synthesize后面沒有告訴系統(tǒng)將傳入的值賦值給誰, 系統(tǒng)默認(rèn)會賦值給和@synthesize后面寫得名稱相同的成員變量
@end

@property增強


  • 背景: Xcode4.4以后apple對@property進(jìn)行了一個增強, 以后只要利用一個@property就可以同時生成setter/getter方法的聲明和實現(xiàn)

  • @property有一個弊端: 它只會生成最簡單的getter/setter方法的聲明和實現(xiàn), 并不會對傳入的數(shù)據(jù)進(jìn)行過濾

    • 如果想對傳入的數(shù)據(jù)進(jìn)行過濾, 那么我們就必須重寫getter/setter方法
    • 如果不想對傳入的數(shù)據(jù)進(jìn)行過濾, 僅僅是提供一個方法給外界操作成員變量, 那么就可以使用@property
  • @property自動生成一個_開頭的成員變量:

    • 如果利用@property來生成getter/setter方法, 那么我們可以不寫成員變量, 系統(tǒng)會自動給我們生成一個_開頭的成員變量
  • 注意:

    • @property自動幫我們生成的成員變量是一個私有的成員變量, 也就是說是在.m文件中生成的, 而不是在.h文件中生成的
    • 如果同時重寫了getter/setter方法, 那么property就不會自動幫我們生成私有的成員變量

@property修飾符


  • 讀寫權(quán)限:

    • readonly: 只會生成getter方法
    • readwrite: 既會生成getter也會生成setter, 默認(rèn)什么都不寫就是readwrite
  • getter勘纯、setter:

    • getter: 可以給生成的getter方法起一個名稱
    • setter: 可以給生成的setter方法起一個名稱
  • 多線程相關(guān):

    • atomic :性能低(默認(rèn))
    • nonatomic :性能高(開發(fā)中使用nonatomic)
  • 內(nèi)存管理相關(guān):

    • retain: 就會自動幫我們生成getter/setter方法內(nèi)存管理的代碼, 用于MRC

    • assign: 不會幫我們生成set方法內(nèi)存管理的代碼, 僅僅只會生成普通的getter/setter方法,用于基本數(shù)據(jù)類型, 默認(rèn)什么都不寫就是assign

    • strong: ARC中保存一個對象用strong, 相當(dāng)于MRC中的retain, 用于ARC

    • weak: 在ARC中如果 弱引用對象不要用assign, 用weak, assign是專門用于保存基本數(shù)據(jù)類型的, 如果保存對象用weak

    • 關(guān)于內(nèi)存管理的修飾符址芯,詳見: property 關(guān)鍵字的區(qū)別詳解:assign 與weak、 __block 與 __weak鞠评、strong 與copy的區(qū)別

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脱茉,一起剝皮案震驚了整個濱河市剪芥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌琴许,老刑警劉巖税肪,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異榜田,居然都是意外死亡寸认,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門串慰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來偏塞,“玉大人,你說我怎么就攤上這事邦鲫【牡穑” “怎么了神汹?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長古今。 經(jīng)常有香客問我屁魏,道長,這世上最難降的妖魔是什么捉腥? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任氓拼,我火速辦了婚禮,結(jié)果婚禮上抵碟,老公的妹妹穿的比我還像新娘桃漾。我一直安慰自己,他們只是感情好拟逮,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布撬统。 她就那樣靜靜地躺著,像睡著了一般敦迄。 火紅的嫁衣襯著肌膚如雪恋追。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天罚屋,我揣著相機與錄音苦囱,去河邊找鬼。 笑死脾猛,一個胖子當(dāng)著我的面吹牛撕彤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播尖滚,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瞧柔!你這毒婦竟也來了漆弄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤造锅,失蹤者是張志新(化名)和其女友劉穎撼唾,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哥蔚,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡倒谷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了糙箍。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渤愁。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖深夯,靈堂內(nèi)的尸體忽然破棺而出抖格,到底是詐尸還是另有隱情诺苹,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布雹拄,位于F島的核電站收奔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏滓玖。R本人自食惡果不足惜坪哄,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望势篡。 院中可真熱鬧翩肌,春花似錦、人聲如沸殊霞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绷蹲。三九已至棒卷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間祝钢,已是汗流浹背比规。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拦英,地道東北人蜒什。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像疤估,于是被迫代替她去往敵國和親灾常。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

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