精華區beta MacDev 關於我們 聯絡資訊
※ 引述《cheech (兩光勘吉)》之銘言:
mickfang:我比較想知道後面用copy, retain, assign的差別跟用法 08/13 04:47
mickfang:還有其他的關鍵字可以使用嗎?謝謝回答 08/13 04:47
@property(attributes) type name; attributre: read read only (只產生 getter) write write only readwrite 產生 getter 和 setter assign 在 setter 中簡單替換新舊變數 retain 在 setter 中 retain 新變數, release 舊變數 copy 在 setter 中 copy 新變數, release 舊變數 對於後三個, 如果你有用 garbage collector 那前兩者無差 如果沒有, 那第一個適用於實體變數(如 int), 它的 setter method 如 - (void)setFoo:(int)bar { foo = bar; } 第二個適用於 pointer, 長得類似 - (void)setFoo:(NSString *)bar { [bar retain]; [foo release]; foo = bar; } 第三個只是把第二個的 retain 改成 copy 同樣是用在 pointer types, 但不是直接 retain 新變數, 而是把它 copy 一份 這通常是因為新變數可能是 mutable types, copy 可以讓它們變成 immutable 另一個可以用的 attribute 是 nonatomic 和, 用在多工程式上 如果不寫明預設會建立 atomic setter methods -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.72.123
aecho:我覺得atomic才是用有多工,nonatomic是為了效率才用的。 08/13 09:10
aecho:atomic會比nonatomic費時一點~~ 08/13 09:10
uranusjr:呃, 可能是我寫得不好, 我的意思是那個設定是在多工程式 08/13 09:42
uranusjr:上才有差, 如果確定不是多工就可以考慮加 unatomic 08/13 09:43