激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術(shù)及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - 關于iOS中屬性變量setter與getter方法的理解

關于iOS中屬性變量setter與getter方法的理解

2021-03-18 16:08劉光軍_Shine IOS

這篇文章主要給大家介紹了關于iOS中屬性變量setter與getter方法的相關資料,文章介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。

關于成員變量、實例變量、屬性變量

成員變量

?
1
2
3
4
@implementation ViewController {
  UILabel *textLabel;
  int count;
}

成員變量是用于類的內(nèi)部,無需與外界接觸的變量。成員變量默認是protected,因為成員變量不會生成set、get方法,所以無法和外界接觸,從上面代碼可以看出來,成員變量是定義在{ }中的變量,如果變量的數(shù)據(jù)類型是一個類,就如:UILabel *textLabel;那么稱這個變量為實例變量。所以實例變量也是成員變量的一種特殊情況,所以實例變量也是類內(nèi)部使用的,無需與外部接觸的變量,這個也就是所謂的類私有變量。

實例變量

UILabel *textLabel;

剛在上面說了,實例變量是成員變量的一種特殊情況,實例變量本質(zhì)上就是成員變量,只是實例是針對的類而言的。

屬性變量

?
1
2
3
4
5
@interface ViewController ()
 
@property (nonatomic, strong) UIButton *nextBtn;
 
@end

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

屬性變量

?
1
2
3
4
5
@interface MyModel : NSObject
 
@property (nonatomic, copy) NSString *age;
 
@end

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

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

屬性的setter和getter方法

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

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

  • setter是給外部提供一個修改內(nèi)部屬性值的接口,通過給對象指針發(fā)送該消息(調(diào)用setter方法)可以做到修改內(nèi)部屬性值。
  • getter 方法是外界提供一個查看內(nèi)部變量的的接口 。

注意

1、屬性的setter方法和getter方法是不能同時進行重寫的,這是因為,一旦你同時重寫了這兩個方法,那么系統(tǒng)就不會幫你生成這個成員變量了,所以會報錯,如果真的就想非要重寫這個屬性的setter和getter方法的話,就要手動生成成員變量,然后就可以重寫了。或者是用

?
1
2
3
4
5
6
7
8
9
10
@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方法的時候我們一般都是這樣寫:

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

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

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://www.jianshu.com/p/4657eff84587

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 日本在线高清 | 欧美日韩1区2区3区 黄片毛片一级 | 国产99精品 | h色网站免费观看 | 今井夏帆av一区二区 | 一本大道av | 欧美一级特级 | 午夜精品福利影院 | 91 成人| 伊人一二三四区 | 一区二区三区在线观看av | 国产精品呻吟 | 看免费av | 精品久久久久久久久久中文字幕 | 免费国产视频在线观看 | 欧美成人精品一区二区 | 天天黄色片 | 88xx成人永久免费观看 | av电影在线观看免费 | 欧美一级毛片大片免费播放 | 日本黄色不卡视频 | 欧美日韩精品一区二区三区在线观看 | 欧洲精品久久久久69精品 | av7777777| 久久久久国产成人免费精品免费 | 欧美wwwsss9999 | 亚洲精品一区国产精品丝瓜 | 国产精品一区二区在线 | 亚洲成人国产综合 | 成人黄视频在线观看 | 成人做爽爽爽爽免费国产软件 | 日韩在线视频二区 | 97久久日一线二线三线 | 牛牛热这里只有精品 | 色阁阁69婷婷 | 国产精品av久久久久久久久久 | 免费在线看黄 | 成人做爰高潮片免费视频美国 | 久久国产一二区 | 精品一区二区三区在线观看视频 | 91av视频大全 |