第六段 理解屬性這一概念

什么是對象?? 類的實例化。

什么是類? 具有相同事物特征的統(tǒng)稱。


對象是面向?qū)ο缶幊痰幕緲?gòu)造單元。對象可以存儲并傳遞數(shù)據(jù)。

對象與對象之間的數(shù)據(jù)傳遞并執(zhí)行任務(wù)的過程,就叫做消息傳遞。

而runtime 就是實現(xiàn)消息傳遞的函數(shù)。


屬性是OC的一項特性,用于封裝對象中的數(shù)據(jù)。 OC對象通常把數(shù)據(jù)保存成各種實例變量,而通過存取方法來訪問對象。? ?點語法比較直觀的對對象進行存取操作。


@property? ?編譯器自動寫出一套存取方法,用來訪問給定類型中具有給定名稱的變量。

@synthesize 用來指定實例變量的名字


nonatomic? ?非原子性,不使用同步鎖。

atomic? 原子性? 缺點影響性能? ? ?舉例,當兩個線程讀寫同一屬性時,無論何時,總能看到有效的屬性值,不加鎖(即nonatomic)的情況下,一個線程設(shè)置值,另一個線程剛好讀值,那么尚未修改好的屬性值讀取出來,發(fā)生這情況,那線程讀的屬性值就不對了。? ?正常情況下也都是使用非原子性,第一考慮性能問題(同步鎖開銷太大),第二點就是一個線程連續(xù)多次讀取某個屬性值過程中,別的線程同時修改該值,即便你聲明原子性,也還是會讀到不同值。

readwrite? 讀/寫權(quán)限? ? ?

readonly? 只讀? ?可在頭文件攜程只讀,在分類中,就是在實現(xiàn)文件內(nèi)寫成可讀可寫

特質(zhì):

assign? 基本用在CGFloat 或者NSInteger? “純量類型”

strong? 擁有關(guān)系,屬性在設(shè)置新值時,保留新值,釋放舊值,然后把新值設(shè)置上去? ? 用于各種view,數(shù)組等

weak 非擁有關(guān)系,屬性設(shè)置新值時,既不保留新值,也不釋放舊值? ? ? ? 與assign 類似,在屬性所指的對象遭到摧毀時,屬性值也會清空。就是指向nil

unsafe_unretained? 此特質(zhì)語義和assign相同? ?適用于對象類型? ? 非擁有關(guān)系 unretained表示不保留? 當目標對象被摧毀時,屬性值不會清空(unsafe)? 這點和weak不一樣

copy? ?所屬關(guān)系與strong相似? ? ?然而在設(shè)置方法并不保留新值,而是將其拷貝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 從三月份找實習到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,820評論 11 349
  • 第六條:理解“屬性”這一概念 “屬性”(property)是Objective-C的一項特性,用于封裝對象中的數(shù)據(jù)...
    DoubleLife不可以閱讀 405評論 0 1
  • 報修功能不僅僅是拍個腦門你想怎樣就怎樣,也要關(guān)照到實際的線下業(yè)務(wù)現(xiàn)狀,因此,一定是管理方案走在前面,支撐性的功能跟...
    后浪Jason閱讀 694評論 0 1
  • 第一次用簡書發(fā)表文章,其實也不知道寫些什么好,現(xiàn)在的心情很焦躁,每天都在重復著索然無味的工作,吸著全國最嚴重的霧霾...
    默之迪閱讀 278評論 0 0
  • 父親是威嚴的,父親是高聳的,父親是外冷內(nèi)熱的。 在我眼里我父親就是一點也沒有威嚴的,但我要什么他都會盡力去買,雖然...
    陳冠彤閱讀 399評論 2 8

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