iOS 屬性修飾符

生命周期

Strong

  • strong表示對(duì)對(duì)象的強(qiáng)引用。
  • ARC下也可以用來修飾block,strong 和 weak兩個(gè)修飾符默認(rèn)是strong。
  • 用于指針變量,setter方法對(duì)參數(shù)進(jìn)行release舊值再retain新值。

Weak

  • weak 表示對(duì)對(duì)象的弱引用,被weak修飾的對(duì)象隨時(shí)可被系統(tǒng)銷毀和回收。
  • weak比較常用的地方就是delegate屬性的設(shè)置。
  • 用weak修飾弱引用,不會(huì)使傳入對(duì)象的引用計(jì)數(shù)加1。

assgin

  • 在MRC 和 ARC下都可以使用。
  • 一般用來修飾基礎(chǔ)數(shù)據(jù)類型(NSInteger, CGFloat) 和 C數(shù)據(jù)類型(int ,float, double)等。它的setter方法直接賦值,不進(jìn)行任何retain操作。

retain

  • 一般情況下,retain用在MRC情況下,被retain修飾的對(duì)象,引用計(jì)數(shù)retainCount要加1的。
  • retain只能修飾oc對(duì)象,不能修飾非oc對(duì)象,比如說CoreFoundation對(duì)象就是C語言框架,它沒有引用計(jì)數(shù),也不能用retain進(jìn)行修飾。
  • retain一般用來修飾非NSString 的NSObject類和其子類。
  • 自動(dòng)把set方法中的成員變量,release原來的值,然后再retain新的值。

copy

  • 一般情況下,copy可以用于對(duì)不可變?nèi)菀椎膶傩孕揎椫?,主要是NSArray /NSDictionary/NSString, 也可以用來修飾block。
  • 在MRC和ARC下都可以使用。
  • 其setter方法,與retain處理流程一樣,先舊值release,再copy出新的對(duì)象。

安全策略

nonatomic

  • nonatomic 非原子屬性。它的特點(diǎn)是多線程并發(fā)訪問性能高,但是訪問不安全

atomic

  • 特點(diǎn)就是安全但是是以耗費(fèi)系統(tǒng)資源為代價(jià)
  • 為setter方法加鎖,而nonatomic 不為setter方法加鎖

訪問權(quán)限

readwrite

  • 當(dāng)我們用readwrite修飾的時(shí)候表示該屬性可讀可改
  • readwrite 程序自動(dòng)創(chuàng)建setter/getter方法,readonly 程序創(chuàng)建getter方法。此外還可以自定義setter/getter方法。
  • 系統(tǒng)默認(rèn)的情況就是 readwrite。

readonly

  • 用readonly修飾的時(shí)候表示這個(gè)屬性只可以讀取,不可以修改,一般常用在我們不希望外界改變只希望外界讀取這種情況。

自定義

  • 這兩個(gè)屬性修飾符用于設(shè)置自定義生成的getter和setter方法名,使用之后將不再使用系統(tǒng)默認(rèn)的setter和getter方法名
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一. 成員變量,實(shí)例變量,屬性變量成員變量 : 用在類的內(nèi)部,無須與外部接觸.成員變量默認(rèn)是被保護(hù)的,所以不會(huì)有s...
    Mccc_閱讀 2,257評(píng)論 0 8
  • iOS屬性問題 屬性修飾符的作用 iOS5之前是MRC, 內(nèi)存需要程序員管理,iOS之后是ARC,除非特殊情況(例...
    自律_自強(qiáng)_通達(dá)閱讀 1,112評(píng)論 0 1
  • @property 有兩個(gè)的作用:一是自動(dòng)生成私有屬性(一般是下劃線+屬性名),而是自動(dòng)生成 getter 和 s...
    竹本閱讀 1,376評(píng)論 0 2
  • 一.寫在前面的話 為什么要把他排在第一位?這是有原因的,因?yàn)檫@破玩意在開發(fā)中很少會(huì)引起注意,一般人都是一帶而過,不...
    objcat閱讀 400評(píng)論 0 3
  • 前言 很多剛接觸iOS的朋友,對(duì)property的可選參數(shù)如何使用,什么情況下使用哪種選項(xiàng)不了解,也問了我很多這方...
    G_GUI閱讀 1,037評(píng)論 0 0

友情鏈接更多精彩內(nèi)容