成員變量和@property 相關內容

舉個列子:

@interface MyObject : NSObject
{
    NSString *name;
    NSInteger age;
}

/** name */
@property (strong, nonatomic) NSString *name;

@end

@implementation MyObject

@synthesize name;
@synthesize age = hehe;
@end

成員變量的聲明

{
    NSString *name;
    NSInteger age;
}

實例變量是成員變量的一部分,name 和age都是成員變量,但是它們是不同的,name是一個對象指針(前面帶*的),a又被稱之為實例變量,成員變量包含實例變量。
成員變量中除了b這樣的基本數據類型,其它的都是實例變量;

setter和getter方法

iOS中setter方法給外界改變屬性值提供一個接口,getter給外界訪問屬性值提供一個接口,通過settergetter方法,對屬性值進行改變和查詢。在點語法中,點在左邊調用setter方法,在右邊調用getter方法。

@property屬性的聲明

/** name */
@property (strong, nonatomic) NSString *name;

@property用來聲明屬性變量,Xcode會自動生成一個標準的settergetter的聲明,同時生成一個NSString *_name的屬性。

@synthesize屬性的實現

@synthesize name;
@synthesize age = hehe;

與@property相對,@synthesize是對@property聲明的實現,自動生成一個name屬性,Xcode自動實現settergetter方法。
如果想要生成指定名字的成員變量,可以在@synthesize屬性名后邊賦值一個你想要的成員變量的名字,在當前類中調用_age,可以直接用hehe 代替

成員變量的可見性

一般情況下,如果屬性或者成員變量放在.h文件中,表示可以被外界訪問,放在.m文件中,表示是私有的變量。
還可以用下面的修飾詞來修飾屬性或者成員變量

  @public @private @protected @package

1.@public 表示這個屬性是公開的,允許當前類、子類、外部都可以訪問;
2.@private 表示這個類私有的 只允許該類內部和該類的對象訪問,其它類和他的子類不累訪問。
3.@protected 表示只允許該類和該類的子類訪問。
4.@package 一般在框架中使用,框架內部相當于@protected,框架外部相當于@private。

@property的修飾詞

原子性(安全性)

|atomic|原子性 | 線程安全 |MAC端用的較多| 追求安全|
|:|:|:|:|
|nonatomic |非原子性 | 非線程安全|手機端應用較多 |追求性能|

權限

|readonly| 只讀 |不生成setter方法,只生成getter方法|
|:|:|:-|
| readwrite| 可讀可寫 | 生成setter和getter方法 系統默認|

修改方法名稱

getter 修改生成的getter方法的名稱
一般情況下,BOOL類型的屬性的getter方法是以is開頭的
setter 修改生成的setter方法的名稱
一般不去修改它

修飾詞(ARC)

strong(MRC用retain) release舊值 retain新值(適用于oc對象)
weak 成員變量是弱指針,對象釋放的時候,指針指向nil  
assign 直接復制(默認,適用于非oc對象)
copy release舊值,copy新值 NSString類型
readWrite:同時生成setter和getter方法的聲明、實現
readonly:只生成getter方法的聲明、實現
setter 決定set方法的名字,需要加```:```
getter 決定get方法的名字,用于BOOL類型 ```is...```

<big>一個iOS學習路上的小學僧,歡迎指正!


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,786評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,656評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,697評論 0 379
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,098評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,855評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,254評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,322評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,473評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,014評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,833評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,016評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,568評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,273評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,680評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,946評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,730評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,006評論 2 374

推薦閱讀更多精彩內容

  • 本文首發于我的個人博客:「程序員充電站」[https://itcharge.cn]文章鏈接:「傳送門」[https...
    ITCharge閱讀 5,513評論 11 24
  • 一筆淺秋,別了流年 該枯的枯了, 該殘的殘了, 碧水之上總要有那么幾片綠妝點, 等秋深,等秋深時那最后的絢麗。 風...
    不語不問閱讀 230評論 1 5
  • 孩子是家長的心肝,是家長的寶貝,但是太寵孩子也是一種錯誤的表現。 小時候聽老師講過這樣一個故事,但是故事出自哪里不...
    舒坦一生閱讀 474評論 1 1
  • 我做什么事都會做得很好。 我不喜歡給別人拒絕自己的機會。 我不喜歡讓別人牽著自己的情緒走。 我不喜歡跟別人有肢體接...
    方南北閱讀 140評論 0 0
  • 服務器,請求路由以及請求處理程序都已經完成了,下面讓我們按照此前的用例給網站添加交互:用戶選擇一個文件,上傳該文件...
    Victor細節閱讀 307評論 0 0