1

我已经阅读了很多主题,但我没有任何工作。我有一个代码,但是当我单击一个单元格时出现此错误: *** -[ModeViewController tableView:didSelectRowAtIndexPath:]: message sent to deallocated instance 0x764df40
代码:
ModeViewController.h

@interface ModeViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, strong) UITableView *tableViewModeSelection;

@end

模式视图控制器.m

@implementation ModeViewController
@synthesize tableViewModeSelection;

- (void)viewDidLoad
{
tableViewModeSelection = [[UITableView alloc] initWithFrame:CGRectMake(10, 80, screenRect.size.width - 20, screenRect.size.height - 90) style:UITableViewStyleGrouped];
tableViewModeSelection.dataSource = self;
tableViewModeSelection.delegate = self;

[self.view addSubview:tableViewModeSelection];

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {    
static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
}

cell.textLabel.text = [modes objectAtIndex:indexPath.row];
cell.backgroundView = [[UIView alloc] initWithFrame:CGRectZero];

return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"Selected at row: %i", indexPath.row);
}

可能是什么问题呢?
提前致谢。

4

2 回答 2

2

-[ModeViewController tableView:didSelectRowAtIndexPath:]: 消息发送到释放实例 0x764df40

此消息并不是说“didSelectRowAtIndexPath:”存在问题,而是说“ModeViewController”实例存在问题,当方法“didSelectRowAtIndexPath:”为被调用。

所以问题在于您的 ModeViewController 实例的生命周期。

你能展示你的控制器是在哪里以及如何创建和存储的吗?

于 2013-04-07T16:58:37.983 回答
0

也许您在滚动视图上添加了 ModeViewController 的视图,但释放了 ModeViewController 实例本身,它实际上是 tableview 的委托。所以异常来了。解决方案可能是在其视图存在之前不释放 ModeViewController 的实例。

于 2013-04-09T19:12:46.547 回答