作者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