@property 后面可以有哪些修飾符?

1.讀寫(xiě)性修飾符:readwrite | readonly

readwrite:表明這個(gè)屬性是可讀可寫(xiě)的,系統(tǒng)為我們創(chuàng)建這個(gè)屬性的setter和getter方法谬以。

readonly:表明這個(gè)屬性只能讀不能寫(xiě),系統(tǒng)只為我們創(chuàng)建一個(gè)getter方法为黎,不會(huì)創(chuàng)建setter方法

2.setter相關(guān)修飾符:assign | retain | copy

setter相關(guān)的修飾符表明setter方法應(yīng)該如何實(shí)現(xiàn)

assign:表示直接賦值邮丰,用于基本數(shù)據(jù)類(lèi)型(NSInteger和CGFloat)和C數(shù)據(jù)類(lèi)型(如int, float, double, char等)另外還有id類(lèi)型铭乾,這個(gè)修飾符不會(huì)牽涉到內(nèi)存管理剪廉。但是如果是對(duì)象類(lèi)型炕檩,使用此修飾符則可能會(huì)導(dǎo)致內(nèi)存泄漏或EXC_BAD_ACCESS錯(cuò)誤

retain:針對(duì)對(duì)象類(lèi)型進(jìn)行內(nèi)存管理斗蒋。如果對(duì)基本數(shù)據(jù)類(lèi)型使用笛质,則Xcode會(huì)直接報(bào)錯(cuò)泉沾。當(dāng)給對(duì)象類(lèi)型使用此修飾符時(shí)经瓷,setter方法會(huì)先將舊的對(duì)象屬性release掉爆哑,再對(duì)新的對(duì)象進(jìn)行一次賦值并進(jìn)行一次retain操作

copy:主要用在NSString類(lèi)型舆吮,表示復(fù)制內(nèi)容揭朝。

系統(tǒng)默認(rèn)屬性是assign色冀。retain是指針的復(fù)制潭袱,copy是內(nèi)容的復(fù)制

3.原子性修飾符:atomic | nonatomic

atomic:表示是線(xiàn)程安全的锋恬。

nonatomic:表示是非線(xiàn)程安全的屯换,使用此屬性性能會(huì)提高一些。

系統(tǒng)默認(rèn)是atomic

4.getter和setter修飾符

@property(getter = getMethodName, setter = setMethodName) Object *obj;

這兩個(gè)屬性修飾符用于設(shè)置自定義生成的getter和setter方法名与学,使用之后將不再使用系統(tǒng)默認(rèn)的setter和getter方法名彤悔。

在@property修飾符中可以出現(xiàn)多個(gè)修飾符索守,分別用逗號(hào)分隔晕窑,但是卵佛,在上述修飾符中杨赤,1截汪,2疾牲,3組中的屬性分別之恩那個(gè)出現(xiàn)一個(gè)衙解,只有4中可以同時(shí)出現(xiàn)阳柔。

Xcode4.2(iOS sdk4.3和以下版本)和以前的版本用retain和assign

Xcode4.3(iOS 5和以上版本)或之后有了ARC用strong和weak

assign:用于非指針變量蚓峦。用于基礎(chǔ)數(shù)據(jù)類(lèi)型(如NSInteger, CGFloat)和C數(shù)據(jù)類(lèi)型(int, float, double, char等), 另外還有id類(lèi)型盔沫。

記住:前面不需要加*的就用assign

retain:用于指針變量架诞。一般用于字符串(NSString, NSMutableString), 數(shù)組(NSMutableArray, NSArray),字典對(duì)象干茉,視圖對(duì)象(UIView)谴忧,控制器對(duì)象(UIViewController)等

strong類(lèi)似于retain角虫,weak類(lèi)似于assign

最簡(jiǎn)單的記憶:

使用assign:對(duì)基礎(chǔ)數(shù)據(jù)類(lèi)型(如NSInteger, CGFloat)和C數(shù)據(jù)類(lèi)型(int, float, double, char等), 另外還有id類(lèi)型

使用copy:對(duì)NSString類(lèi)型

使用retain:對(duì)其它NSObject和其子類(lèi)

1沾谓、在頭文件中用@property聲明一個(gè)屬性名戳鹅,編譯器會(huì)自動(dòng)為我們轉(zhuǎn)換成這個(gè)屬性名的getter方法和setter方法均驶。

2枫虏、在實(shí)現(xiàn)文件中使用@synthesize propertyName妇穴,編譯器先會(huì)查找這個(gè)屬性名的setter方法和getter方法有沒(méi)有被人為實(shí)現(xiàn)隶债,如果已經(jīng)實(shí)現(xiàn)腾它,則不再實(shí)現(xiàn)死讹,如果沒(méi)有,則會(huì)幫我們生成一個(gè)屬性命的setter方法和getter方法赞警。

3、當(dāng)在實(shí)現(xiàn)文件中使用了@synthesize propertyName愧旦,編譯器還會(huì)做一件事情,在類(lèi)成員變量中查找一個(gè)名為_(kāi)propertyName的成員變量忘瓦,如果沒(méi)有搁廓,再繼續(xù)查找名為propertyName的成員變量耕皮,如果這兩個(gè)都沒(méi)有境蜕,編譯器會(huì)自動(dòng)為我們生成一個(gè)私有的名為_(kāi)propertyName的成員變量凌停。注意粱年,系統(tǒng)自動(dòng)創(chuàng)建的都是私有的罚拟。

4台诗、當(dāng)在實(shí)現(xiàn)文件中這樣寫(xiě)@synthesize propertyName = varName;時(shí),setter和getter方法所對(duì)應(yīng)的是一個(gè)名為varName的成員變量拉队,修改和讀取的是varName成員變量的值。

5粱快、當(dāng)我們?cè)趯?shí)現(xiàn)文件中不寫(xiě)@synthesize propertyName時(shí)秩彤,在Xcode 4.5之前的版本不會(huì)幫我們自動(dòng)實(shí)現(xiàn)setter和getter方法事哭,系統(tǒng)當(dāng)然也不再會(huì)為我們生成對(duì)應(yīng)的成員變量漫雷。但是在Xcode 4.5之后可以不用寫(xiě)@synthesize了鳍咱,就跟3降盹、4一樣了谤辜。

6蓄坏、當(dāng)我們既定義了@synthesize每辟,又在實(shí)現(xiàn)文件中人為重寫(xiě)setter和getter方法時(shí),那么@synthesize將不再工作渠欺,也就不會(huì)為我們創(chuàng)建沒(méi)有定義的_propertyName成員變量了妹蔽,這時(shí)候如果在setter和getter方法中調(diào)用_propertyName將會(huì)發(fā)生編譯錯(cuò)誤挠将!@property 后面可以有哪些修飾符?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末胳岂,一起剝皮案震驚了整個(gè)濱河市舔稀,隨后出現(xiàn)的幾起案子乳丰,更是在濱河造成了極大的恐慌内贮,老刑警劉巖产园,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異什燕,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)竞端,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人乘陪,你說(shuō)我怎么就攤上這事〉窭蓿” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵捂刺,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我族展,道長(zhǎng)拔鹰,這世上最難降的妖魔是什么仪缸? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任列肢,我火速辦了婚禮恰画,結(jié)果婚禮上瓷马,老公的妹妹穿的比我還像新娘拴还。我一直安慰自己欧聘,他們只是感情好片林,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布怀骤。 她就那樣靜靜地躺著费封,像睡著了一般蒋伦。 火紅的嫁衣襯著肌膚如雪弓摘。 梳的紋絲不亂的頭發(fā)上痕届,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音研叫,去河邊找鬼锤窑。 笑死蓝撇,一個(gè)胖子當(dāng)著我的面吹牛果复,可吹牛的內(nèi)容都是我干的渤昌。 我是一名探鬼主播虽抄,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼迈窟!你這毒婦竟也來(lái)了私植?” 一聲冷哼從身側(cè)響起车酣,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎湖员,沒(méi)想到半個(gè)月后贫悄,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體娘摔,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年凳寺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肠缨。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖晒奕,靈堂內(nèi)的尸體忽然破棺而出闻书,到底是詐尸還是另有隱情吴汪,我是刑警寧澤惠窄,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布漾橙,位于F島的核電站杆融,受9級(jí)特大地震影響霜运,放射性物質(zhì)發(fā)生泄漏脾歇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一藕各、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧激况,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)浙踢。三九已至,卻和暖如春洛波,著一層夾襖步出監(jiān)牢的瞬間胰舆,已是汗流浹背蹬挤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工缚窿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留焰扳,地道東北人滨攻。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓蓝翰,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親女嘲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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