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