Re: [問題] 請問Objective-C中property的問題

看板MacDev作者 (←這人是超級笨蛋)時間15年前 (2009/08/13 08:31), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串3/3 (看更多)
※ 引述《cheech (兩光勘吉)》之銘言:

08/13 04:47,
我比較想知道後面用copy, retain, assign的差別跟用法
08/13 04:47

08/13 04:47,
還有其他的關鍵字可以使用嗎?謝謝回答
08/13 04:47
@property(attributes) type name; attributre: readonly read only (只產生 getter) 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

08/13 09:10, , 1F
我覺得atomic才是用有多工,nonatomic是為了效率才用的。
08/13 09:10, 1F

08/13 09:10, , 2F
atomic會比nonatomic費時一點~~
08/13 09:10, 2F

08/13 09:42, , 3F
呃, 可能是我寫得不好, 我的意思是那個設定是在多工程式
08/13 09:42, 3F

08/13 09:43, , 4F
上才有差, 如果確定不是多工就可以考慮加 unatomic
08/13 09:43, 4F
※ 編輯: uranusjr 來自: 220.135.72.123 (08/13 23:50)

08/14 10:21, , 5F
好文.最近在剛好在記憶體管理上坎坎坷坷.= =;
08/14 10:21, 5F

08/14 10:21, , 6F
不過...nonatomic跟unatomic有什麼不同啊.
08/14 10:21, 6F
文章代碼(AID): #1AWrx9x- (MacDev)
文章代碼(AID): #1AWrx9x- (MacDev)