iOS - UITableViewCell中的自定义UISwitch dealloc错误

时间:2016-01-25 21:24:56

标签: ios objective-c dealloc

我正在使用UISwitch子类将UISwitches添加到我的所有UITableViewCells。我使用自定义类可以将更多信息传递给UISwitch。

我在iOS 8上的错误只有:

*** -[NamedUISwitch _sendActionsForEvents:withEvent:]: message sent to deallocated instance

NamedUISwitch是我制作的自定义UISwitch:

@interface NamedUISwitch : UISwitch
@property (nonatomic, strong) NSString *specialinfo1;
@property (nonatomic, strong) NSString *specialinfo2;
@end

@implementation NamedUISwitch

@end

这就是我在cellForRowAtIndexPath方法中实现UISwitch的方法。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [[UITableViewCell alloc] init];
    NamedUISwitch *switchview = [[NamedUISwitch alloc] initWithFrame:CGRectZero];
    [switchview addTarget:self action:@selector(updateSwitchAtIndexPath:) forControlEvents:UIControlEventTouchUpInside];
    cell.textLabel.text = ...;
    switchview.nomEtablissement = ...;
    switchview.tag = ...;
    switchview.typeInfo = ...;
    cell.accessoryView = switchview;
    return cell;
}

我曾尝试使用Instruments来跟踪dealloc,但我似乎无法让它以正确的方式工作。 我该如何解决这个dealloc问题?

1 个答案:

答案 0 :(得分:1)

您没有正确创建细胞。你需要这样的代码:

var element = document.getElementById('my_element'),
    //return size as it is defined 
    fontSize = element.style.fontSize;

这样就可以正确地重复使用单元格,每个单元只能获得一个开关。

更好的选择是创建一个自定义表格单元格类,并且该单元格类设置自己的开关。