为什么NSThread可以在不创建自己的autoreleasepoool的情况下清除自动释放的对象

时间:2014-07-29 07:48:17

标签: ios nsthread nsautoreleasepool

所有。 我有以下测试代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [NSThread detachNewThreadSelector:@selector(test) toTarget:self withObject:nil];
}

-(void)test
{
    MyClass *obj = [[[MyClass alloc] init] autorelease];
    NSLog(@"%@",[my description]);
}

我在NSThread的方法中创建了一个autorelease对象,但是没有用户创建的autoreleasepool。 当NSThread退出时,obj刚刚被释放(我有一个断点int方法delloc)。 为什么?剂量NSThread自己创建自己的自动释放池吗?

1 个答案:

答案 0 :(得分:-1)

我认为就是这样。 通常你需要创建一个autoreleasepoll,因为你可能需要你的线程总是运行,如果你不创建autoreleasepoll,内存使用会一直增加。

但是在你的代码中,你只是在另一个线程中运行一个方法,在运行它之后,线程exit.so线程中使用的内存全部被释放。