2012-04-02 12 views
0

私はinitメソッドで多くの背景を持つ配列をロードする必要があり、この配列は有効なままです。このシーンを有効にしておいてから離れるまで(deallocで解放する)私は、この持っている私のinitでNSArrayは常に有効です

:今

backgrounds=[ [NSArray alloc] initWithObjects:BACK,BACK1,BACK2,BACK3,BACK4,BACK5,BACK6,BACK7,BACK8,BACK9, nil]; 

    int imageDelta=1; 
    for (background in backgrounds) 
     { 
      background.position=ccp(240*imageDelta,160); 
      imageDelta=imageDelta+2; 
      [self addChild:background ]; 
     } 
    //release backgrounds here ???? 

を、私の質問は、 iと私は今backgroundsを解放する必要がありますすることができています? この配列がコード中に有効である必要があります。 私は実際に配列を理解していないようです。

ありがとうございます。

+0

init関数の外部に背景配列が必要ですか? – TwiterZX

答えて

0

ないとしてマークされました。あなたはそれを完了したときであるdeallocでそれを解放すべきであると言っても間違いありません。

initメソッドでそのバックグラウンド配列を解放すると、解放されたインスタンスであるため、後でそのバックグラウンド配列にアクセスすることはできません。インスタンス変数としてバックグラウンド配列を持つ理由は、再度アクセスしたいからです。

0

いいえ、背景が割り当てられていないため、気にする必要はありません。

明示的ないけない場合は、変数を割り当てて、それはインスタンス変数だから、あなたがinitメソッドでその背景配列を解放してはならない自動解放

+0

は割り当てられ、NSArrayは割り当てられていますか?または私は何かを理解できませんでしたか? 、私は単語のallocがそこにあると思います、リリースが登場する必要があります.. – user1280535

+0

それは割り当てられています:[NSArray alloc] – jbat100

0

インスタンス変数としてバックグラウンド配列が必要な場合(変数にはオブジェクトの寿命を延ばす必要があります)、dealocで解放する必要があります。

あなただけのinitメソッドで背景の配列が必要な場合は、ローカル変数と使用するように変更:

NSArray *backgrounds = [NSArray initWithObjects:BACK,BACK1,BACK2,BACK3,BACK4,BACK5,BACK6,BACK7,BACK8,BACK9, nil]; 

は、あなたがそのようにautorelease、それを気にする必要はありません。

関連する問題