2011-08-18 72 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