[討論] retain count值
今天在寫iPhone程式時,出現一個奇怪的Bug,執行到一半就會當機。
找了很久發現問題出在retain count。
因為retain count變為0,東西被dealloc了。接下來取用就會出問題。
但我不曉得為什麼這樣retain count會變為0,跟大家討論一下。
以下只取用重點部分:
在.h中
...
NSMutableArray *currentStroke;
....
@property (nonatomic, retain) NSMutableArray *currentStroke;
在.m中
@synthesize currentStroke;
NSMutableArray *mutableArray = [[NSMutableArray alloc] initWithCapacity:20];
NSLog(@"mutable array retain count1 = %d", [mutableArray retainCount]);
currentStroke = mutableArray;
NSLog(@"mutable array retain count2 = %d", [mutableArray retainCount]);
NSLog(@"currentStroke retain count1 = %d", [currentStroke retainCount]);
[currentStroke retain];
NSLog(@"currentStroke retain count2 = %d", [currentStroke retainCount]);
跑出來的結果
2009-12-26 21:52:38.950 [17246:207] mutable array retain count1 = 1
2009-12-26 21:52:38.951 [17246:207] mutable array retain count2 = 1
2009-12-26 21:52:38.951 [17246:207] currentStroke retain count1 = 1
2009-12-26 21:52:38.952 [17246:207] currentStroke retain count2 = 2
我的想法是
mutable array retain count1是1沒錯,但mutable array retain count2應該
為2,因為currentStroke的Setter會先release舊的(沒有東西),再retain新的
(mutableArray),這時為1+1=2. 後面的retain只是想確定用NSLog輸出的東西
正確。
請問我的想法哪裡錯了呢?
我是用Simulator - 3.1.2 | Debug.
謝謝!
--
▂▃▄▃▂
◢ ˙ ◣
˙ ▅
▉▃ /◤ 喵喵~~~~
▊▏◣╲ˍ ╱▎
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.126.4.1
推
12/26 22:15, , 1F
12/26 22:15, 1F
→
12/26 22:15, , 2F
12/26 22:15, 2F
→
12/26 22:16, , 3F
12/26 22:16, 3F
→
12/26 22:16, , 4F
12/26 22:16, 4F
→
12/27 00:06, , 5F
12/27 00:06, 5F
→
12/27 00:06, , 6F
12/27 00:06, 6F
→
12/27 00:48, , 7F
12/27 00:48, 7F
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章