我想知道是否有人可以快速帮我解决以下问题,是否需要添加[myTableView版本];在我调用[view addSubview:[self myTableView]]之后; ?最初我没有想到,并通过CLANG运行它来生成内存警告
这是我的想法:
@property (nonatomic, retain) UITableView *myTableView;
- (void)loadView {
NSLog(@"%s", __PRETTY_FUNCTION__);
[self setTitle:@"Location Data"];
CGRect viewFrame = CGRectMake(0, 20, 320, 460);
UIView *view = [[UIView alloc] initWithFrame:viewFrame];
CGRect tableFrame = CGRectMake(0, 0, 320, 416);
UITableView *tempTableView = [[UITableView alloc] initWithFrame:tableFrame];
[self setMyTableView:tempTableView];
[tempTableView release];
[view addSubview:[self myTableView]];
//[myTableView release]; << HERE
[[self myTableView] setDelegate:self];
[[self myTableView] setDataSource:self];
[self setView:view];
[view release];
}
- (void)dealloc {
[myTableView release];
[dataModel release];
[super dealloc];
}
编辑: 嗯,也许我不像[查看addSubview:[self myTableView]];保留它并在完成时释放。你的卡尔,我的坏人。我对以下内容感到困惑:分配,设置,发布,这只是取得所有权的视图(以及稍后发布的责任)
答案 0 :(得分:2)
您的方法不会retain
myTableView
,因此它不应release
。
答案 1 :(得分:2)
当你说[view addSubview:[self myTableView]];
将保留你的桌面视图时,你是对的,但由于它是保留它的view
,所以应该释放它的view
。当视图被解除时,它将会发生。您只需要释放自己保留的内容,即只需在dealloc方法中释放一次表格视图。