我在applicationDidFinishLaunching中调用:
[self performSelectorInBackground:@selector(performReachabilityCheck) withObject:nil];
这是performReachabilityCheck
-(void)performReachabilityCheck{
internetReach = [[Reachability reachabilityForInternetConnection] retain];
[internetReach startNotifer];
[self updateInterfaceWithReachability: internetReach];
}
我是否需要创建自动发布池?如果是这样,我怎么能在这种情况下做到这一点?
更新: 这是实现自动释放池的正确方法吗?
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
[self performSelectorInBackground:@selector(performReachabilityCheck) withObject:nil];
[pool release]; pool = nil;
答案 0 :(得分:1)
是的,无论何时在后台线程上执行选择器,都需要将其包装在AutoreleasePool中。您正在使用的类可能会创建自动释放的对象。如果你在连接到调试器时运行它,你会看到很多关于“没有自动释放池,只是泄漏”的消息。