NSAutoreleasePool 一般情况不用过多处理。每一个工程的main方法都会自动生成一个NSAutoreleasePool,对象autorelease后,一般不用担心释放问题
也有特殊情况,学习后再补充
如果自己希望生成NSAutoreleasePool,有一个例子:在http链接异步时候,可以创建一个NSAutoreleasePool,待异步完成后释放Pool
简单代码如下:
- (void)startAsynchronous
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[self setInProgress:YES];
@try {
if ([self isCancelled] || [self complete])
{
[self willChangeValueForKey:@"isFinished"];
[self didChangeValueForKey:@"isFinished"];
} else {
[self willChangeValueForKey:@"isExecuting"];
[self didChangeValueForKey:@"isExecuting"];
[self main];
}
} @catch (NSException *exception) {
NSError *underlyingError = [NSError errorWithDomain:NetworkRequestErrorDomain code:ASIUnhandledExceptionError userInfo:[exception userInfo]];
[self failWithError:[NSError errorWithDomain:NetworkRequestErrorDomain code:ASIUnhandledExceptionError userInfo:[NSDictionary dictionaryWithObjectsAndKeys:[exception name],NSLocalizedDescriptionKey,[exception reason],NSLocalizedFailureReasonErrorKey,underlyingError,NSUnderlyingErrorKey,nil]]];
}
[pool release];