我很難理解NSAutoReleasePool的工作原理。NSAutoreleasePool EXC_BAD_ACCESS&Objective Objective-C中有關內存管理的問題
1)NSAutoReleasePool是否分別跟蹤每個分配或者它是否工作變量相關?換句話說,這是否泄漏內存或釋放兩個?:
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSArray* myObj = [NSObject alloc];
myObj = [NSObject alloc];
[pool release];
2)爲什麼下面的代碼工作:
NSAutoreleasePool *pool1 = [[NSAutoreleasePool alloc] init];
NSArray* myObj = [NSObject alloc];
for(int i = 0; i < 100; i++) {
[myObj release];
myObj = [NSObject alloc];
}
[pool1 release];
但下面的[pool1 release]
給EXC_BAD_ACCESS:
NSAutoreleasePool *pool1 = [[NSAutoreleasePool alloc] init];
NSArray* myObj = [NSObject alloc];
NSAutoreleasePool *pool2 = [[NSAutoreleasePool alloc] init];
for(int i = 0; i < 100; i++) {
[myObj release];
myObj = [NSObject alloc];
}
[pool2 release];
[pool1 release];
3)我怎樣才能使上面的代碼(帶有2個池的代碼)?
請下次使用,請勿使用
,而是使用``或單擊面板上的符號{}。這是我們在這裏所做的:D – vodkhang 2011-01-07 14:06:29