小さなiPhone専用アプリケーション(iOS SDK 6.0)を構築していますが、XCodeでEXC_BAD_ACCESS例外が発生します。
アプリケーションには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プロパティは次のように宣言されます(これも合成されます):ViewControllerUITableViewDelegate
@property (nonatomic, retain) UIImage* cellImage;
画像はviewWillAppear、ViewControllerのメソッドで次の行で初期化されます。
cellImage = [UIImage imageNamed:@"my_image_resource.png"];
このコードは正しく機能しますが、iOS 6.0のみの機能で画像をカスタマイズすると、EXC_BAD_ACCESSが表示されます。
cellImage = [[UIImage imageNamed:@"my_image_resource.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 10) resizingMode:UIImageResizingModeStretch];
デバッグは、エラーをトリガーする行を見つけるのに役立ちました-それはinitWithStyleMyCustomCell実装のメソッドにあります:
imageView.image = image;
私は多くのEXC_BAD_ACCESSエラーを調べました。このエラーが表示される理由のチュートリアルも読みましたが、これまでは何も割り当てを解除していません。この時点でいくつかのオブジェクトがリリースされている可能性がありますが、どのオブジェクトを正確に見つけることができず、どのように問題を修正できますか。
また、ViewControllerクラスで2つのプロパティを作成してみました。1つは元の画像を保持するためのもので、もう1つはインセット付きの画像を保持するためのものです。ただし、問題は解決しません。
なぜこれがエラーなのですか?はめ込みのある画像で機能しないのはなぜですか?どうすればこの問題を解決できますか?
ありがとうございました。