这段代码会泄漏内存吗?

时间:2010-10-20 11:11:17

标签: iphone objective-c multithreading memory

我在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;

1 个答案:

答案 0 :(得分:1)

是的,无论何时在后台线程上执行选择器,都需要将其包装在AutoreleasePool中。您正在使用的类可能会创建自动释放的对象。如果你在连接到调试器时运行它,你会看到很多关于“没有自动释放池,只是泄漏”的消息。