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

關(guān)于成員變量瞎暑、實例變量、屬性變量

成員變量

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

成員變量是用于類的內(nèi)部滓窍,無需與外界接觸的變量卖词。成員變量默認(rèn)是protected,因為成員變量不會生成set贰您、get方法坏平,所以無法和外界接觸拢操,從上面代碼可以看出來,成員變量是定義在{ }中的變量舶替,如果變量的數(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,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拧额,居然都是意外死亡浓领,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進(jìn)店門势腮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來联贩,“玉大人,你說我怎么就攤上這事捎拯±峄希” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵署照,是天一觀的道長祸泪。 經(jīng)常有香客問我,道長建芙,這世上最難降的妖魔是什么没隘? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮禁荸,結(jié)果婚禮上右蒲,老公的妹妹穿的比我還像新娘。我一直安慰自己赶熟,他們只是感情好瑰妄,可當(dāng)我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著映砖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上竹宋,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天蜈七,我揣著相機(jī)與錄音秒拔,去河邊找鬼。 笑死宪潮,一個胖子當(dāng)著我的面吹牛溯警,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播狡相,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼梯轻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了尽棕?” 一聲冷哼從身側(cè)響起喳挑,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎滔悉,沒想到半個月后伊诵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡回官,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年曹宴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歉提。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖苔巨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情侄泽,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布悼尾,位于F島的核電站柿扣,受9級特大地震影響诀豁,放射性物質(zhì)發(fā)生泄漏窄刘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一舷胜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦烹骨、人聲如沸翻伺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吨岭。三九已至,卻和暖如春峦树,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背魁巩。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工谷遂, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留畴嘶,地道東北人窗悯。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像悦污,于是被迫代替她去往敵國和親切端。 傳聞我的和親對象是個殘疾皇子踏枣,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,665評論 2 354