我正在构建一个仅适用于 iPhone 的小型应用程序(iOS SDK 6.0),并且在 XCode 中出现 EXC_BAD_ACCESS异常。
该应用程序具有UITableView
自定义UITableViewCell
. 我已经UITableViewCell
在一个子类中实现了(我在这里调用它MyCustomCell
)并向构造函数添加了另一个参数:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier cellImage:(UIImage *)image;
被UIImage
添加到contentView
方法TableCell
中,代码如下:
imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];
imageView.image = image;
[self.contentView addSubview:imageView];
这个函数cellForRowAtIndexPath
当然是在函数内部调用的:
static NSString *CellIdentifier = @"MyCustomCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[MyCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier cellImage:self.cellImage] autorelease];
}
return cell;
(也是)的cellImage
属性被声明为(它也是合成的):ViewController
UITableViewDelegate
@property (nonatomic, retain) UIImage* cellImage;
图像在viewWillAppear
ViewController 的方法中使用以下行进行初始化:
cellImage = [UIImage imageNamed:@"my_image_resource.png"];
此代码工作正常,但 EXC_BAD_ACCESS 出现,当我自定义与 iOS 6.0 唯一功能的图像:
cellImage = [[UIImage imageNamed:@"my_image_resource.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 10) resizingMode:UIImageResizingModeStretch];
调试帮助我找到了触发错误的行 - 它在initWithStyle
MyCustomCell 实现的方法中:
imageView.image = image;
我已经查看了很多EXC_BAD_ACCESS
错误,我还阅读了为什么会出现这个错误的教程,但到目前为止,我并没有取消任何东西。此时可能会释放某些对象,但我无法准确找到哪个对象以及如何解决该问题。
我还尝试在 ViewController 类中创建两个属性,一个用于保存原始图像,另一个用于保存带有插图的图像。然而,它并没有解决问题。
为什么这是一个错误?为什么它不适用于带有插图的图像?我该如何解决这个问题?
谢谢你。