@property

在前面的學(xué)習(xí)中,出現(xiàn)的(nonatomic,copy)可能給初學(xué)者帶來(lái)了很大的困惑饵逐,為什么要對(duì)屬性進(jìn)行多方面的設(shè)置括眠,這樣寫有什么好處?下面我們來(lái)了解一下倍权。

首先要說(shuō)明的是掷豺,在@property對(duì)類中屬性進(jìn)行聲明時(shí),我們通常會(huì)對(duì)所聲明的屬性進(jìn)行一些設(shè)置薄声,例如:nonatomic当船、copy、strong奸柬、assign生年、weak婴程、readwrite
廓奕、readonly等。

如果@property后不對(duì)屬性進(jìn)行設(shè)置档叔,該屬性同樣有它的默認(rèn)的一些設(shè)置桌粉。下面向大家介紹一下幾種屬性的用法以及默認(rèn)的情況:

nonatomic:原名:非原子性,它涉及到多線程的相關(guān)知識(shí)衙四。在這里我們只需要知道有nonatomic聲明的屬性铃肯,任何人任何地點(diǎn)任何時(shí)間都可以調(diào)用它,所以它的缺點(diǎn)就是不安全传蹈,而優(yōu)點(diǎn)就是效率高押逼,訪問(wèn)速度快。

atomic(默認(rèn)):原子性惦界。和nonatomic正好相反挑格,他對(duì)屬性的訪問(wèn)進(jìn)行了限制,保護(hù)了聲明屬性的安全沾歪,缺點(diǎn)就是:訪問(wèn)效率低漂彤,速度慢。

copy:一般使用于字符串灾搏,它的特點(diǎn)如同它的中文翻譯挫望,對(duì)屬性進(jìn)行內(nèi)容的賦值,將內(nèi)容另外拷貝一份狂窑,保存在一個(gè)單獨(dú)的存儲(chǔ)空間中媳板。

strong:叫做:強(qiáng)引用。weak:弱引用

為了區(qū)分strong和weak以及copy之間的關(guān)系泉哈,我們來(lái)舉一個(gè)生活中的例子:我們應(yīng)該都放過(guò)風(fēng)箏(如果不知道什么是風(fēng)箏蛉幸,你的童年太悲慘了)到旦,在放風(fēng)箏的時(shí)候我們手中必須有一根線牽引著風(fēng)箏。

strong就代表你手中的線(一支風(fēng)箏上可能有很多根線巨缘,也就是說(shuō)可能有多個(gè)strong聲明的屬性用的同一塊內(nèi)存空間)添忘,只要還有一個(gè)人牽著風(fēng)箏,風(fēng)箏就不回飛走若锁,用OC的話來(lái)說(shuō)就是搁骑,只要還有一個(gè)用strong聲明的屬性不被銷毀,納悶這塊內(nèi)存中的數(shù)據(jù)就不回丟失又固,該內(nèi)存空間就不回釋放仲器。

而對(duì)于weak來(lái)說(shuō),就相當(dāng)于旁邊看放風(fēng)箏的人仰冠,他們只能用手指著你手里的風(fēng)箏乏冀,大喊著“風(fēng)箏風(fēng)箏”,他們只能和你一起欣賞風(fēng)箏洋只,而對(duì)于是不是繼續(xù)放風(fēng)箏的決定權(quán)在你辆沦,如果你不在放風(fēng)箏了,那他們也只能“各回各家识虚,各找各媽”肢扯。用OC的語(yǔ)言來(lái)表達(dá),就是說(shuō)用weak聲明的屬性雖然可以也可以訪問(wèn)內(nèi)存担锤,但是要在這塊內(nèi)存沒(méi)有釋放之前蔚晨,一旦這塊內(nèi)存被釋放之后,weak聲明的屬性將失去作用肛循。

對(duì)于copy來(lái)說(shuō)铭腕,是最幸福的一件事了,雖然你放著風(fēng)箏被我看見(jiàn)了多糠,我也想放累舷,而且我也不差錢,我就買了一支一模一樣的風(fēng)箏和你一起放熬丧。你收起風(fēng)箏不放了笋粟,我還可以放,有錢就是這么任性析蝴。從OC的角度解釋copy害捕,就是說(shuō)帶有copy聲明的屬性當(dāng)指向一塊內(nèi)存空間時(shí),它會(huì)完整的拷貝一份闷畸,然后用他自己的那一份尝盼,和被拷貝的內(nèi)存空間沒(méi)關(guān)系。

assign我認(rèn)為是其中最簡(jiǎn)單的佑菩,它應(yīng)用于OC的基礎(chǔ)數(shù)據(jù)類型和C語(yǔ)言中的基本數(shù)據(jù)類型(int,float,double,char)

readwrite:是一種默認(rèn)屬性盾沫,它代表這個(gè)屬性即可以讀裁赠,也可以寫(這個(gè)屬性既有set方法,又有g(shù)et方法)

readonly:和readwrite不同赴精,它代表這個(gè)屬性只能讀佩捞,不能進(jìn)行寫操作(只有g(shù)et方法,沒(méi)有set方法)

getter=<#method#>:在聲明的這個(gè)屬性可讀的前提下蕾哟,使用這個(gè)設(shè)置可以更改屬性的get方法名一忱,自己起一個(gè)。
setter=<#method#>:同get方法類似谭确,在聲明的屬性可寫的前提下帘营,使用這個(gè)設(shè)置可以設(shè)定這個(gè)屬性的set方法。

在@property的屬性中逐哈,以上幾個(gè)屬性用處最多芬迄,實(shí)際開(kāi)發(fā)過(guò)程中基本上都能囊括。

對(duì)于以上的幾個(gè)屬性昂秃,如果你覺(jué)的自己雖然知道它的功能是什么禀梳,但是具體使用過(guò)程中總是很矛盾到底用哪個(gè),下面幫大家總結(jié)一下:

對(duì)于基本數(shù)據(jù)類型械蹋,例如int出皇,double,float哗戈,char,還有OC語(yǔ)言中的BOOL以及NSInteger來(lái)說(shuō)荷科,都用assign唯咬。

對(duì)于OC中特有的字符串類型(NSString)來(lái)說(shuō),最常用的是copy畏浆。

對(duì)于OC中大量的類對(duì)象胆胰,一般用strong。

在后面我們會(huì)提到協(xié)議刻获,在涉及到協(xié)議中的delegate時(shí)蜀涨,我們會(huì)用weak。

對(duì)于前面提到的默認(rèn)屬性蝎毡,可以不寫厚柳,但是如果不是默認(rèn)屬性,就要寫明你的意圖沐兵。

對(duì)于原子性和非原子性别垮,如果不涉及到線程的情況下,為了運(yùn)行效率的提高扎谎,一般寫上非原子性碳想。

在默認(rèn)情況下烧董,由于每個(gè)屬性都是可讀可寫的,所以我們自已自定義屬性的set和get方法胧奔。

在某些特殊情況下逊移,如果該屬性已經(jīng)設(shè)置為可讀了,那就不要在用getter這個(gè)屬性龙填,因?yàn)槁暶髁艘灿貌涣嗣螅襒code會(huì)給你提示,set也是一樣觅够。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末胶背,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子喘先,更是在濱河造成了極大的恐慌钳吟,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窘拯,死亡現(xiàn)場(chǎng)離奇詭異红且,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)涤姊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門暇番,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人思喊,你說(shuō)我怎么就攤上這事壁酬。” “怎么了恨课?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵舆乔,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我剂公,道長(zhǎng)希俩,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任纲辽,我火速辦了婚禮颜武,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拖吼。我一直安慰自己鳞上,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布绿贞。 她就那樣靜靜地躺著因块,像睡著了一般。 火紅的嫁衣襯著肌膚如雪籍铁。 梳的紋絲不亂的頭發(fā)上涡上,一...
    開(kāi)封第一講書(shū)人閱讀 51,598評(píng)論 1 305
  • 那天趾断,我揣著相機(jī)與錄音,去河邊找鬼吩愧。 笑死芋酌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的雁佳。 我是一名探鬼主播脐帝,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼糖权!你這毒婦竟也來(lái)了堵腹?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤星澳,失蹤者是張志新(化名)和其女友劉穎疚顷,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體禁偎,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡腿堤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了如暖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笆檀。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖盒至,靈堂內(nèi)的尸體忽然破棺而出酗洒,到底是詐尸還是另有隱情,我是刑警寧澤妄迁,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布寝蹈,位于F島的核電站,受9級(jí)特大地震影響登淘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜封字,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一黔州、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧阔籽,春花似錦流妻、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至在辆,卻和暖如春证薇,著一層夾襖步出監(jiān)牢的瞬間度苔,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工浑度, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留寇窑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓箩张,卻偏偏與公主長(zhǎng)得像甩骏,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子先慷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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