作者zonble (zonble)
看板MacDev
標題Re: [問題] 關於使用autorelease或直接使用release …
時間Sun Jul 19 00:29:40 2009
※ 引述《uranusjr (←這人是超級笨蛋)》之銘言:
: ※ 引述《atst2 (atst2)》之銘言:
: 這邊還有一種寫法
: - (void)setMyString:(NSString *)newString
: {
: [newString retain];
: [_myString release];
: _myString = newString;
: }
有種比較保險的方法是這樣寫:
- (void)setMyString:(NSString *)newString
{
id tmp = _myString;
_myString = [newString retain];
[tmp release];
}
主要原因是,在 Multi thread 的環境下會比較安全。以前面的狀況來說-
: - (void)setMyString:(NSString *)newString
: {
: [newString retain];
: [_myString release];
// 如果這個時候,另外一個 thread 呼叫到 _myString
// ,而 _myString 沒有指到任何一個東西上,這樣就會爆炸…
: _myString = newString;
: }
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.44.187.184
※ 編輯: zonble 來自: 114.44.187.184 (07/19 00:30)
1F:推 Blueshiva:cool~ 07/19 00:38
2F:→ uranusjr:Wow, this is nice... 07/19 00:45