0

.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に関するメモリリークはありますか?そして、漏れがある場合、私はこの問題をどうすればよいですか?前もって感謝します!

4

1 に答える 1

0

はい、漏れの可能性があります。viewDidLoad複数回呼び出される可能性があり、その場合、メモリ リークが発生します。で保持するものはすべて、遅くとも で(および で)viewDidLoadリリース (および に設定) する必要があります。nilviewDidUnloaddealloc

合成されたセッターを使用していた場合viewDidLoad(ほとんどの場合そうする必要があります)、viewDidLoad実行されるたびに新しいオブジェクトを割り当てたときに古いスレッド オブジェクトが解放されるため、問題は軽減されます。

于 2012-06-01T15:19:06.267 に答える