iOS 對屬性變量setter和getter方法的理解

關(guān)于成員變量迈喉、實例變量绍刮、屬性變量

成員變量

@implementation ViewController {
    UILabel *textLabel;
    int count;
}

成員變量是用于類的內(nèi)部,無需與外界接觸的變量挨摸。成員變量默認(rèn)是protected孩革,因為成員變量不會生成setget方法得运,所以無法和外界接觸膝蜈,從上面代碼可以看出來,成員變量是定義在{ }中的變量熔掺,如果變量的數(shù)據(jù)類型是一個類饱搏,就如:UILabel *textLabel;那么稱這個變量為實例變量。所以實例變量也是成員變量的一種特殊情況置逻,所以實例變量也是類內(nèi)部使用的推沸,無需與外部接觸的變量,這個也就是所謂的類私有變量券坞。

實例變量

UILabel *textLabel;
剛在上面說了鬓催,實例變量是成員變量的一種特殊情況,實例變量本質(zhì)上就是成員變量恨锚,只是實例是針對的類而言的宇驾。

  • 屬性變量
@interface ViewController ()

@property (nonatomic, strong) UIButton *nextBtn;

@end

屬性變量是用于與其他對象交互的變量。

屬性變量

@interface MyModel : NSObject

@property (nonatomic, copy) NSString *age;

@end

現(xiàn)在我們聲明屬性用的最多的方式就是這樣子猴伶。編譯器會自動生成一個以下劃線開頭的實例變量_age课舍,不需要自己手動再去寫實例變量菌瘫。而且也不需要在.m文件中寫@synthesize age;當(dāng)然這個方式也會自動為你生成setter布卡,getter方法雨让。

@synthesize 聲明的屬性=變量。意思是忿等,將屬性的setter,getter方法栖忠,作用于這個變量。@synthesize還有一個作用贸街,就是可以指定與屬性對應(yīng)的實例變量庵寞,例如我可以這樣寫@synthesize age = myAge;,那這樣子的話我們?nèi)フ{(diào)用的時候self.age其實是操作的實例變量myAge,而不是_age了薛匪。

屬性的setter和getter方法

//setter方法
- (void)setAge:(NSString *)age {
    _age = age;
}
//getter方法
- (NSString *)age {
    return _age;
}

上面代碼是屬性的setter和getter方法捐川。

  • setter是給外部提供一個修改內(nèi)部屬性值的接口,通過給對象指針發(fā)送該消息(調(diào)用setter方法)可以做到修改內(nèi)部屬性值逸尖。
  • getter 方法是外界提供一個查看內(nèi)部變量的的接口 古沥。
注意
  • 1 屬性的setter方法和getter方法是不能同時進(jìn)行重寫的,這是因為娇跟,一旦你同時重寫了這兩個方法岩齿,那么系統(tǒng)就不會幫你生成這個成員變量了,所以會報錯苞俘,如果真的就想非要重寫這個屬性的setter和getter方法的話盹沈,就要手動生成成員變量,然后就可以重寫了吃谣∑蚍猓或者是用
    @synthesize:
@synthesize age = myAge;

- (void)setAge:(NSString *)age {
    myAge = age;
}

- (NSString *)age {
    return myAge;
}
  • 2 在getter方法中最后返回return _age;而不是return self.age, 這是因為點語法實際上是對setter和getter方法的調(diào)用岗憋,如果在getter方法中調(diào)用return self.age的話肃晚,就會循環(huán)調(diào)用。

  • 3 在重寫屬性的setter方法的時候我們一般都是這樣寫:

- (void)setInfoArr:(NSArray *)infoArr {
    _infoArr = infoArr;
    _infoArr = @[@"我是數(shù)組"];
}

我們需要在setter方法中加上這句_infoArr = infoArr;澜驮,我們在重寫setter方法的時候?qū)⑿轮礽nfoArr 賦值給屬性變量_infoArr 以便我們在外面調(diào)用陷揪。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惋鸥,一起剝皮案震驚了整個濱河市杂穷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卦绣,老刑警劉巖耐量,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異滤港,居然都是意外死亡廊蜒,警方通過查閱死者的電腦和手機趴拧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來山叮,“玉大人著榴,你說我怎么就攤上這事∑ň螅” “怎么了脑又?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長锐借。 經(jīng)常有香客問我问麸,道長,這世上最難降的妖魔是什么钞翔? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任严卖,我火速辦了婚禮,結(jié)果婚禮上布轿,老公的妹妹穿的比我還像新娘哮笆。我一直安慰自己,他們只是感情好汰扭,可當(dāng)我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布疟呐。 她就那樣靜靜地躺著,像睡著了一般东且。 火紅的嫁衣襯著肌膚如雪启具。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天珊泳,我揣著相機與錄音鲁冯,去河邊找鬼。 笑死色查,一個胖子當(dāng)著我的面吹牛薯演,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播秧了,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼跨扮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了验毡?” 一聲冷哼從身側(cè)響起衡创,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎晶通,沒想到半個月后璃氢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡狮辽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年一也,在試婚紗的時候發(fā)現(xiàn)自己被綠了巢寡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡椰苟,死狀恐怖抑月,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情舆蝴,我是刑警寧澤爪幻,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站须误,受9級特大地震影響挨稿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜京痢,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一奶甘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧祭椰,春花似錦臭家、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至携茂,卻和暖如春你踩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背讳苦。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工带膜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鸳谜。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓膝藕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親咐扭。 傳聞我的和親對象是個殘疾皇子芭挽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,652評論 2 354

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