2011-08-18 73 views
1

好吧,所以我有点新的NSMutableArray类,我想我失去了一些明显的东西。我有一个对象传递一个NSMutable阵列到我的窗控制器,像这样在my.m:问题与NSMutableArray可见性/保留

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

我在summaryWindow对象中的接收机的方法,以便:

-(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没有问题,并在同一个对象(summaryWindow)我有以下方法:

- (NSMutableArray *)getGlobalStatusArray 
{ 

    return globalStatusArray; 
} 

现在我有globalStatusArray在我.h文件中声明为

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],但我错过了一些巨大的东西。 FYI aBuffer在我的.h也宣称,

+2

而不是'nil',它看起来像你的数组是空的。如果它是'nil',它会记录'(null)' – albertamg

回答

0

由于albertamg指出,看起来像一个空数组,而不是零和释放的对象不会奇迹般地变成零,一般情况下反正。

这种气味强烈的两个不同的对象。尝试在方法中记录self并查看一个实例是否正在获取数组,另一个正在与UI进行交互。

+0

是的它看起来像它可能是两个不同的对象,一个在xib一个是由另一个对象创建的。现在我需要弄清楚如何将数组传递给该UI控制器。 – acidprime

+0

这是我对同一主题的跟进问题http://stackoverflow.com/questions/7112903/pass-an-nsmutablearray-to-a-nswindowcontroller – acidprime

+0

我想知道为什么我在控制台中接收到重复的NSLogs,它使现在有这么多意义,我有两个在这里玩的东西。 – acidprime

0

这个代码是没有做什么有用的东西:

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

如果旧的阵列的数量是零,它的渗漏实际的数组对象。如果计数不为零,那么它会正确释放它。只要做好释放,不要打扰数数。

你确定myArray中有实际的东西吗?

+0

这就是代码审查,是的,你的权利,我不需要真的做这个检查 – acidprime