所有。 我有以下测试代码:
- (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自己创建自己的自动释放池吗?
答案 0 :(得分:-1)
我认为就是这样。 通常你需要创建一个autoreleasepoll,因为你可能需要你的线程总是运行,如果你不创建autoreleasepoll,内存使用会一直增加。
但是在你的代码中,你只是在另一个线程中运行一个方法,在运行它之后,线程exit.so线程中使用的内存全部被释放。