iOS:有泄漏吗?

时间:2012-06-01 15:09:46

标签: ios nsthread

·H:

#import <UIKit/UIKit.h>
#import "Todo.h"
@interface TodoCostApplyViewController : UIViewController

{
    NSThread* headViewThread;
    NSThread* tableViewThread;
}
@property (nonatomic, retain) NSThread* headViewThread;
@property (nonatomic, retain) NSThread* tableViewThread;
@end

的.m:

@interface TodoCostApplyViewController ()
@end
- (void)viewDidLoad
{
    [super viewDidLoad];
    headViewThread = [[NSThread alloc] initWithTarget:self
                                             selector:@selector(drawHeadView)
                                               object:nil];
    [headViewThread start];
    tableViewThread = [[NSThread alloc] initWithTarget:self
                                         selector:@selector(drawTableView)
                                           object:nil];
    [tableViewThread start];   
}

- (void)dealloc
{
    [tableViewThread release];
    [headViewThread release];
}

是否有关于tableViewThread和headViewThread的内存泄漏? 如果有泄漏,该怎么办? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

是的,存在潜在的泄漏。可能会多次调用viewDidLoad,在这种情况下,您会看到内存泄漏。您viewDidLoad中保留的所有内容最迟应在nil(以及viewDidUnload)中发布(并设置为dealloc)。

如果您在viewDidLoad中使用了合成的setter(正如您几乎总是那样),那么问题就会得到缓解,因为每次执行viewDidLoad时,旧的线程对象都会在您分配时释放新的。