IOS宣告屬性關鍵詞

2021-06-21 10:38:05 字數 1502 閱讀 9157

atomic: 

原子操作(原子性是指事務的乙個完整操作,操作成功就提交,反之就回滾. 原子操作就是指具有原子性的操作)在objective-c 屬性設定裡面預設的就是atomic

,意思就是setter/getter函式是乙個原子操作,如果多執行緒同時呼叫setter時,不會出現某乙個執行緒執行完setter所有語句之前,另乙個執行緒就開始執行setter,相當於函式頭尾加了鎖

. 這樣的話併發訪問效能會比較低

.nonatomic: 

非原子操作 一般不需要多執行緒支援的時候就用它,這樣在併發訪問的時候效率會比較高

. 在objective-c裡面通常物件型別都應該宣告為非原子性的. ios中程式啟動的時候系統只會自動生成乙個單一的主線程.程式在執行的時候一般情況下是在同乙個執行緒裡面對乙個屬性進行操作. 如果在程式中我們確定某乙個屬性會在多執行緒中被使用,並且需要做資料同步,就必須設定成原子性的,但也可以設定成非原子性的,然後自己在程式中用加鎖之類的來做資料同步.

在標頭檔案中宣告屬性的時候使用atomic 和 nonatomic等價於在標頭檔案裡面新增2個函式乙個是用於設定這個屬性的,乙個是用於讀取這個屬性,例如:- (nsstring *)name; - (void)setname:(nsstring *)str;

atomic / nonatomic 需要和@synthesize/@dynamic配和使用才有意義.

@synthesize 

如果沒有實現setter和getter方法,編譯器將會自動在生產setter和getter方法。

@dynamic 

表示變數對應的屬性訪問器方法,是動態實現的,你需要在 nsobject中繼承而來的+(bool) resolveinstancemethod:(sel) sel 方法中指定動態實現的方法或者函式。

屬性修飾其他關鍵字:

getter=gettername

指定get方法,並需要實現這個方法

。必須返回與宣告型別相同的變數,沒有引數

setter=settername

指定set方法,並需要實現這個方法

。帶乙個與宣告型別相同的引數,沒有返回值(返回空值)

當宣告為readonly的時候,不能指定set方法

readwrite

如果沒有宣告成readonly,那就預設是readwrite

。可以用來賦值,也可以被賦值

readonly

不可以被賦值

assign

所有屬性都預設assign

,通常用於標量(簡單變數 int, float,cgrect等)

一種典型情況是用在對物件沒有所有權的時候,通常是delegate,避免造成死迴圈(如果用retain的話會死迴圈)

retain

屬性必須是objc物件,擁有物件所有權,必須在dealloc中release一次。

copy

屬性必須是objc物件,擁有物件所有權,必須在dealloc中release一次。且屬性必須實現nscopying協議

一般常用於nsstring型別

關鍵詞密度

百科名片 目錄 隱藏 什麼是增加keywords密度的最好方式 關鍵字堆砌 keyword stuffing 的定義 關鍵字堆砌 keyword stuffing 關鍵字堆砌 keyword stuffing 是指在乙個網頁中非常密集地放置關鍵字。一般說來,如果關鍵字的出現過於頻繁,就會蓋過網頁的其...

關鍵詞提取

隱含主題模型優缺點 隱含主題模型可以很好地表示文件和標籤主題,有效降低標籤系統中噪音的影響。但是另外乙個方面,隱含主題相對於詞而言粒度較粗,對於具體實體 如人名 地名 機構名和產品名 的標籤沒有辦法做到很好地區分,因此對這些細粒度標籤推薦效果較差 典型的聚類演算法 層次聚類 hierarchical...

常用關鍵詞

保留字是指在程式語言中,暫時還沒有賦予含義,不過也不能用於定義變數名和類名,因為後續再公升級過程中可能會用到的單詞。final 繼承的出現提高了 的復用性,並方便開發。但隨之也有問題,有些類在描述完之後,不想被繼承,或者有些類中的部分方法功能是固定的,不想讓子類重寫。final修類類不可以被繼承,但...