我对于是否使用UIView addTarget:action:导致该视图被保留感到困惑。具体来说,我有一个带有自定义单元格视图的UITableView,这些视图已在视图控制器上的事件中注册。这些单元格视图会自动发布。

UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

UIView *cellView = [[UIView alloc] initWithFrame:viewRect];


[cellView addTarget:self action:@selector(dosSomething:) forControlEvents:UIControlEventTouchUpInside]; //is this not a good idea?

[cellView autorelease]; //will this get released?
}

最佳答案

addTarget:action:forControlEvent:不会以任何方式影响视图的保留计数。您现在呼叫autorelease的方式很好。您的视图将被放置在自动释放池中,并最终被释放。

请注意,要使您的视图有用,必须将其作为子视图添加到其他视图(例如您的单元格)中。该视图将保留在那里,因为它将获得您视图的所有权,但是通过在此处调用autorelease可以正确处理事情。

关于iphone - 自动释放和选择器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4953215/

10-11 15:33