我很难理解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