对于我的表格视图,我正在进行以下操作(释义)
。H
@interface OptionsView : UIView <UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, retain) NSArray *dataSource;
.m
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
...
self.dataSource = [NSArray arrayWithObjects:options, sections, sponsor, nil];
}
return self;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(self.dataSource) {
NSArray *ds = [self.dataSource objectAtIndex:indexPath.section];
NSDictionary *d = [ds objectAtIndex:indexPath.row];
ActionBlock a = [d objectForKey:ACTION]; // <-- Thread 1: EXC_BAD_ACCESS (code=2, address=0x802)
if(a != nil) a();
}
}
你可以看到我didSelectRowAtIndexPath
的我得到了一个,EXC_BAD_ACCESS
但我不知道为什么。因为我使用的是 arc,所以它不是僵尸问题(已经检查过)。
使用断点,我看到self.dataSource
它在初始化后就存在,但在需要时不存在。它也没有显示出来<nil>
,它只是空白。此外,这在调试中有效,但在发布中无效,那是什么意思?
** 编辑添加截图 **
你会注意到既没有也没有ds
出现d
……奇怪吗?