2011-08-18 11 views
1

NSMutableArrayクラスにちょっと新しく、私は何か明白でないものがあると思います。NSMutableArrayの可視性の表示/保持

summaryWindow = [[SummaryWindowController alloc] init]; 
[summaryWindow setGlobalStatusArray:globalStatusArray]; 

IのようsummaryWindowオブジェクト内の受信方法を持っている:私はmy.mのようにオブジェクトが私のウィンドウコントローラにNSMutable配列を渡す有する

-(void)setGlobalStatusArray:(NSMutableArray *)myArray 
{ 

    if ([myArray count] >0) { 
     if (globalStatusArray) { 
      [globalStatusArray release]; 
     } 
     globalStatusArray = [[NSMutableArray alloc] initWithArray:myArray]; 

     NSLog(@"Summary Window Init with new array: %@",globalStatusArray); 

ノーのNSLogを参照します今、私はglobalStatusArrayが

として私の.hファイルで宣言されてい

- (NSMutableArray *)getGlobalStatusArray 
{ 

    return globalStatusArray; 
} 

:問題、およびその同じオブジェクト(summaryWindow)で、私は次のメソッドを持っています

NSMutableArray *globalStatusArray; 

そうすべきではありません。これは私が使っているので保持されます:initWithArray?

私は別のIBActionメソッドでは、この値にアクセスしようとすると:

- (IBAction)refreshButtonClicked:(id)sender 
{ 
    NSLog(@"The user has clicked the update button"); 
    [ aBuffer addObjectsFromArray: globalStatusArray]; 
    NSLog(@"Buffer is currently:%@",aBuffer); 
    [tableView reloadData]; 
} 

NSMutable配列がnullである

2011-08-18 10:40:35.599 App Name[65677:1307] The user has clicked the update button 
2011-08-18 10:40:35.600 App Name[65677:1307] Buffer is currently:(
) 

私は値すなわちを得るために、私自身の方法を使用して試してみました[自己getGlobalStatusArray]を、私は何か巨大なものを逃しています。

if ([myArray count] >0) { 
    if (globalStatusArray) { 
     [globalStatusArray release]; 
    } 
    globalStatusArray = [[NSMutableArray alloc] initWithArray:myArray]; 

古い配列のカウントがゼロであれば、それは実際の配列オブジェクトをリークしています:FYI aBufferも

+2

'nil'ではなく、配列が空であるように見えます。もしそれが 'nil'ならば'(null) 'を返すでしょう – albertamg

答えて

0

はなくゼロよりも空の配列、および解放オブジェクトが魔法のように、とにかく通常の状況下でゼロとならないように見えることに留意しました。

これは、2つの異なるオブジェクトの匂いが強くなります。メソッドにselfを記録して、1つのインスタンスが配列を取得していて、別のインスタンスがUIとやり取りしているかどうかを確認してください。

+0

それはおそらく2つの異なるオブジェクト、xibもう一方のオブジェクトによって作成されたものです。今、私はそのUIコントローラに配列を渡す方法を理解する必要があります。 – acidprime

+0

私は同じトピックについての私のフォローアップの質問です。http://stackoverflow.com/questions/7112903/pass-an-nsmutablearray-to-a-nswindowcontroller – acidprime

+0

なぜ私はコンソールに重複したNSLogを受け取っていたのだろうと思っていました。あまり意味がありますが、ここには2つのオブジェクトがあります。 – acidprime

0

このコードは便利な何もしていないが、私の.hで宣言されています。カウントがゼロでない場合、適切に解放します。ちょうどリリースを行い、数えなくてはいけません。

本当にmyArrayには何かがありますか? albertamgとして

ジョー

+0

それはコードレビューのためのものですね、あなたの権利私は本当にそのチェックをする必要はありません – acidprime