3

CustomImageViewをUITableViewCellに追加しました。

    UITableViewCell *cell = nil;
    if (cell == nil) {
         cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:@"Cell1"] autorelease];
    }
    CustomImageView *customIV = [[CustomImageView alloc] init];
    [cell.contentView addSubView:customIV];
    [customIV release];

しかし、tableviewをリロードしようとすると、エラーが発生します。

エラーコールスタックは次のようになります。

ここに画像の説明を入力してください

出力文字列は次のとおりです。

-[CustomImageViewスーパービュー]:割り当て解除されたインスタンス0x1f848f30に送信されたメッセージ

4

4 に答える 4

1
CustomImageView *customIV = [[CustomImageView alloc] initWithFrame:CGRectMake(x, y, w, h)];
[cell.contentView addSubView:customIV];

私がメモリを解放したとき、それは私と一緒に行われました。
だから私によると、それはメモリの割り当てを解除するので、解放する必要はありません。

うまくいけば、それはあなたを助けるでしょう。
ありがとう。

于 2013-03-07T04:14:18.430 に答える
1

この行をコメントして実行してみてください[customIV release];。データのリロード中にクラッシュすることはありません。

この背後にある理由は、新しいカスタム ビューを作成して解放しようとするたびに、システムに余分な負荷がかかり、クラッシュが発生するためです。

于 2013-03-07T04:40:59.697 に答える
1

画像を各セルに 1 回だけ追加します。コードを次のように変更します。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell1"];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:@"Cell1"] autorelease];
        CustomImageView *customIV = [[CustomImageView alloc] init];
        [cell.contentView addSubView:customIV];
        [customIV release];
    }

    return cell;
}

これが機能しない場合は、完全なcellForRowAtIndexPath方法を示す必要があります。コードの一部だけを表示すると、手助けが難しくなります。

于 2013-03-07T07:29:34.657 に答える
0

CustomImageViewこのエラーは、作成時にオブジェクトが作成されるたびに発生するためcellです。

したがって、最善の方法は、最初にオブジェクトを初期化しCustomImageViewてから作成することですUITableView

そのような、

CustomImageView *customIVそれをあなたの中に入れてから、それを入れ.h file@synthesizeください.m File

(このコードを上に置いてくださいUITableView

self.customIV = [[CustomImageView alloc] init];

次に、作成しますUITableView

self.tablView = [[UITableView alloc]init];
.
.
.
.

そしてcellForRowAtIndexPath 追加するだけで[cell.contentView addSubView:self.customIV];

于 2013-03-07T04:33:07.093 に答える