1

あなたが提供できる助けをいただければ幸いです。

tableView、detailView、flipView、および moreDetail View を持つアプリがあります。26 番目の要素までトランジションを移動しても問題ありません。フリップと moreDetailView に移動するボタンを押すと、アプリがクラッシュします。

エラー Msg: が表示されます[NSIndexPath row] message sent to deallocated instance

indexPath を何度も呼び出していると思いますが、25 番目の要素まではすべてうまく機能し、その後機能しなくなるのはなぜですか? NSIndexPath はどのように割り当て解除されましたか? 割り当てを解除したことはありません。

ご存知の方、助けてください。ありがとうございました!!!

Xcode は問題がここにあると言います:

@implementation produceView aka *detailView*

- (IBAction)showInfo {

        FlippedProduceView *fView = [[FlippedProduceView alloc]initWithIndexPath:index];
    fView.flipDelegate = self;


    fView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:fView animated:YES];
         [fView release]; 

}


 - (IBAction) buttonPushed:(id)sender

{

    picView *pictureView = [[picView alloc]initWithIndexPath:index];


    pictureView.picDelegate = self;
    pictureView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;     

    [self presentModalViewController:pictureView animated:YES];
        [pictureView release];
}

-(id)initWithIndexPath:(NSIndexPath *)myIndexPath {   
if (self == [super init]) {
            path = myIndexPath;

    }
    return self;

}

@implementation picView aka *moreDetailView*

- (void)viewDidLoad {
    RipeGuideAppDelegate *AppDelegate = (RipeGuideAppDelegate *)[[UIApplication sharedApplication] delegate];
    self.picViewArray = AppDelegate.arrayProduceInfo;

    NSMutableDictionary *dictionary = [picViewArray objectAtIndex:path.row];
}

@implementation FlippedProduceView aka *flipView*


- (id)initWithIndexPath:(NSIndexPath *)myIndexPath {
    if (self == [super init]) {
        indexes = myIndexPath;
    }
    return self;
}

- (void)viewDidLoad {
    RipeGuideAppDelegate *AppDelegate = (RipeGuideAppDelegate *)[[UIApplication sharedApplication] delegate];
    self.flipViewArray = AppDelegate.arrayProduceInfo;

    NSMutableDictionary *dictionary = [flipViewArray objectAtIndex:indexes.row];
}
4

1 に答える 1

12

@property (retain) NSIndexPath *path;インスタンス変数の代わりにプロパティ()を使用する必要がありますself.path = myIndexPath。そうすると、保持カウントが増加し、IndexPathが自動解放されたときに割り当てが解除されなくなります。

于 2010-11-23T04:22:29.987 に答える