作者Gsus (肉元,吉米,助教)
看板MacDev
標題[問題] obj-c有pass by reference這件事嗎?
時間Sun Sep 19 19:13:18 2010
我寫了一小段code
NSString *aString = @"a";
NSString *bString = @"b";
bString = aString;
^^^^^^^^^^^^^^^^^^
aString = @"c";
NSLog(@"aString = %@", aString);
NSLog(@"bString = %@", bString);
aString = bString;
^^^^^^^^^^^^^^^^^^
這行code看似是pointer assignment,但就結果來看卻是value assignment
其實是最近遇到一些問題突然讓我想起pass by reference的問題....
P.S. 我遇到的問題是
我有一個loginViewController,一個dataViewController & settingsViewController
一旦login成功了便會得到userID並傳給dataViewController & settingsViewController
但是settingsViewController可以讓使用者loggout
總之這3個viewController都有一個attribute叫做userID
然後每當userID有改變時又必須在viewControllers之間同步
用protocol用到錯綜複雜....突然想起pass by reference這件事
順便問一下這種問題該怎麼處理比較好呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.248.5.150
推 yllan:沒有 pass by ref. 09/19 19:56
→ Gsus:那可以請教一下我這種問題通常是用什麼方式解決的嗎qq 09/19 20:00
→ Sapp:userID傳過去有 retain 就沒問題了(dealloc時記得 release) 09/19 20:04
→ Sapp:有改變就重傳吧 不然就是傳 NSString ** 09/19 20:06
→ Sapp:不然實作 singleton 也行 09/19 20:07
→ zonble:用 notification 通知吧 09/19 21:38