iphone - iOS:UIImage EXC_BAD_ACCESS

标签 iphone ios objective-c memory-management

我正在构建一个仅适用于 iPhone 的小型应用程序 (iOS SDK 6.0),我得到了 EXC_BAD_ACCESS XCode 中的异常。

该应用程序有 UITableView与自定义 UITableViewCell .我已经实现了UITableViewCell在一个子类中(我在这里称之为 MyCustomCell)并向构造函数添加了另一个参数:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier cellImage:(UIImage *)image;
UIImage已添加到 contentViewTableCell在方法中,使用以下代码:
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 的属性(property)(也是 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 类中创建两个属性,一个用于保存原始图像,另一个用于保存带有插图的图像。然而,它并没有解决问题。

为什么这是一个错误?为什么它不适用于带有插图的图像?我该如何解决这个问题?

谢谢你。

最佳答案

执行语句imageView.image = image;时出现错误.因此,对象 image执行此语句时不存在。它必须在以前发布过,或者通过 [release image] 明确发布。 (因为您不使用 ARC),或者如果 image 则隐含是自动发布的(例如,如果您使用 [UIImage imageNamed:...] 创建它)。
正如 Aaron Wojnowski 建议的那样,我认为最好的方法是转换您的代码 ARC。否则,检查是否 image可以意外释放。

关于iphone - iOS:UIImage EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14674966/

相关文章:

ios - 从 iTunes 安装 ipa 文件

ios - NSMutableArray 为空和 nil 都返回 true

objective-c - 如何从在线目录加载 UIImage 数组中的图像并将其存储在应用程序中

ios - 蓝牙 HID 设备和 iOS 文本字段

objective-c - 是否可以在子类中重新声明私有(private) ivar 以使其可访问?

ios - 在 Swift 中使用 Hello World 程序的“NSInvalidArgumentException”

iphone - 同一 View Controller 的 2 个实例 : one does not work in the TabBarController

objective-c - 在 Xcode Storyboard 中使用 Unwind Segue 关闭 Popover

ios - 连接 3G 时可达性返回 ReachableViaWiFi

ios - 启动图像和启动画面之间的区别