關(guān)于@property特性的介紹

寫個小文章簡單闡述iOS開發(fā)中@property的特性問題。

@Property是聲明屬性的語法掠哥,它可以快速方便的為實例變量創(chuàng)建存取器巩踏,并允許我們通過點語法使用存取器。
每個@property屬性都含有特性(attribute)续搀,用來描述響應(yīng)存取方法的行為塞琼,這些特性需要寫在小括號里。任何@property屬性都有特性禁舷,每個特性都有不同的可選類型彪杉,每種特性中都有一項是默認(rèn)的。如果使用默認(rèn)特性則不用在括號中表明牵咙。

1.多線程特性

多線程特性有兩種可選類型:nonatomic 和 atomic派近,其中后者為默認(rèn)特性。但因atomic這種線程保護技術(shù)很耗費資源洁桌,在iOS開發(fā)中一般使用nonatomic特性构哺。

  • atomic:默認(rèn)是有該屬性的,這個屬性是為了保證程序在多線程情況战坤,編譯器會自動生成一些互斥加鎖代碼曙强,避免該變量的讀寫不同步問題。
  • nonatomic:如果該對象無需考慮多線程的情況途茫,請加入這個屬性碟嘴,這樣會讓編譯器少生成一些互斥加鎖代碼,可以提高效率囊卜。

2.讀/寫特性

readwrite娜扇、readonly這兩個屬性的價值错沃,不是提供成員變量訪問接口,而是控制成員變量的訪問權(quán)限雀瓢。

  • readwrite:這個屬性是默認(rèn)的情況枢析,會自動為你生成存取器。
  • readonly:只生成getter不會有setter方法刃麸。

3.內(nèi)存管理特性

內(nèi)存管理特性的類型可以決定相應(yīng)的實例變量將如何引用對象醒叁。

  • assign:默認(rèn)類型,setter方法直接賦值泊业,不進行任何retain操作把沼,不改變引用計數(shù)。該方法只會針對“純量類型”(CGFloat或NSInteger等)和C數(shù)據(jù)類型(int, float, double, char, 等等)的簡單賦值操作吁伺,id類型也要用assign饮睬,所以一般iOS中的代理delegate屬性都會用assign來標(biāo)示。
  • strong:強引用篮奄,其存亡直接決定了所指向?qū)ο蟮拇嫱隼Τ睢J褂迷撎匦詫嵗兞吭谫x值時,會釋放舊值同時設(shè)置新值窟却,對對象產(chǎn)生一個強引用昼丑,即引用計數(shù)+1。如果不存在指向一個對象的引用间校,并且此對象不再顯示在列表中矾克,則此對象會被從內(nèi)存中釋放。
  • weak:弱引用憔足,不決定對象的存亡胁附。屬性表明了一種”非擁有關(guān)系“,既不釋放舊值滓彰,也不保留新值控妻,即引用計數(shù)不變,當(dāng)指向的對象被釋放時揭绑,該屬性自動被設(shè)置為nil弓候。即使一個對象被持有無數(shù)個弱引用,只要沒有強引用指向它他匪,那么還是會被清除菇存。
  • copy:和strong類似,不過該屬性會被復(fù)制一個新的副本邦蜜。很多時使用copy是為了方式Mutable(可變類型)在我們不知道的情況下修改了屬性值依鸥,而用copy可以生成一個不可變的副本防止被修改。如果我們自己實現(xiàn)setter方法的話悼沈,需要手動copy贱迟。
    用 @property 聲明 NSString姐扮、NSArray、NSDictionary 經(jīng)常使用 copy 關(guān)鍵字衣吠,是因為他們有對應(yīng)的可變類型:NSMutableString茶敏、NSMutableArray、NSMutableDictionary缚俏,他們之間可能進行賦值操作惊搏,為確保對象中的字符串值不會無意間變動,應(yīng)該在設(shè)置新屬性值時拷貝一份袍榆。
  • unsafe_unretained:和weak一樣胀屿,唯一的區(qū)別就是當(dāng)對象被釋放后塘揣,該屬性不會被設(shè)置為nil包雀。所以是unsafe的。

4.方法名特性

方法名可以修改為我們合成的方法名亲铡,可以使存取方法語義更加符合應(yīng)用場景才写。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市奖蔓,隨后出現(xiàn)的幾起案子赞草,更是在濱河造成了極大的恐慌,老刑警劉巖吆鹤,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厨疙,死亡現(xiàn)場離奇詭異,居然都是意外死亡疑务,警方通過查閱死者的電腦和手機沾凄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來知允,“玉大人撒蟀,你說我怎么就攤上這事∥赂耄” “怎么了保屯?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長涤垫。 經(jīng)常有香客問我姑尺,道長,這世上最難降的妖魔是什么蝠猬? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任切蟋,我火速辦了婚禮,結(jié)果婚禮上吱雏,老公的妹妹穿的比我還像新娘敦姻。我一直安慰自己瘾境,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布镰惦。 她就那樣靜靜地躺著迷守,像睡著了一般。 火紅的嫁衣襯著肌膚如雪旺入。 梳的紋絲不亂的頭發(fā)上兑凿,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天,我揣著相機與錄音茵瘾,去河邊找鬼礼华。 笑死,一個胖子當(dāng)著我的面吹牛拗秘,可吹牛的內(nèi)容都是我干的圣絮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼雕旨,長吁一口氣:“原來是場噩夢啊……” “哼扮匠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凡涩,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤棒搜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后活箕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體力麸,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年育韩,在試婚紗的時候發(fā)現(xiàn)自己被綠了克蚂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡座慰,死狀恐怖陨舱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情版仔,我是刑警寧澤游盲,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站蛮粮,受9級特大地震影響益缎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜然想,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一莺奔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧变泄,春花似錦令哟、人聲如沸恼琼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晴竞。三九已至,卻和暖如春狠半,著一層夾襖步出監(jiān)牢的瞬間噩死,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工神年, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留已维,地道東北人。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓已日,卻偏偏與公主長得像垛耳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子捂敌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,654評論 2 354

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