我有一个运行良好的设备/调试版本。当我构建发布并分发到设备上时,我收到此错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UILabel setWidth:]: unrecognized selector sent to instance 0x1605a0'
它发生在 cellForRowAtIndexPath 中:
cell.videoName.width = 163.0;
其中 cell 是自定义 UITableViewCell,videoName 是 UILabel。为什么调试构建工作正常而发布失败?分发构建也失败了。所有设置为 Base SDK == iPhone OS 3.0。
为了在手机上发布版本,我只是将我的代码签名更改为开发人员。我也尝试过通过 iTunes 构建发行版,但失败并出现同样的错误。
- - 编辑 - -
我正在像这样加载单元格:
static NSString * QuestionCellIdentifier = @"QuestionCellIdentifier";
TopicCellController *cell = (TopicCellController *)[tableView dequeueReusableCellWithIdentifier:QuestionCellIdentifier];
if(cell == nil){
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TopicCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
cell.videoName.width = 163.0;
在运行时,单元格是自定义类型,并且 videoName 不是 nil。如果我删除最后一行(设置宽度),它工作正常。
--- 编辑:新发现 ---
我发现我可以这样做,而不是调用宽度,它可以在发布中工作:
cell.videoName.frame = CGRectMake(10, 10, 100, 30);
这真的没有任何意义。