У меня есть переменная экземпляра, которая является NSMutableArray
@interface SummaryWindowController : NSWindowController {
NSMutableArray *aBuffer;
NSMutableArray устанавливается с помощью этого метода (вызывается из объекта, который инициализировал этот объект):
- (void)setGlobalStatusArray:(NSMutableArray *)myArray
{
if (!aBuffer) {
[myArray retain];
NSLog(@"aBuffer not init , alloc init now");
aBuffer = [[NSMutableArray alloc] initWithArray:myArray];
}
NSLog(@"--> Received buffer: %@",aBuffer);
}
NSLog показывает содержимое массива, когда этот метод запускается:
2011-08-18 16:00:26.052 AppName[74751:1307] --> Recievied buffer: (
{
discription = DiskUsage;
menu = "<NSMenuItem: 0x1005116e0 Hardware Status>";
status = Warning;
},
Но в моем методе, который использует эту переменную экземпляра, он больше не кажется init'ed
- (IBAction)refreshButtonClicked:(id)sender
{
NSLog(@"The user has clicked the update button");
if (!aBuffer) {
NSLog(@"refresh button not init");
}
NSLog(@"Buffer is currently:%@",aBuffer);
}
Как и когда ондо этого момента я вижу следующий NSLog:
2011-08-18 16:04:25.301 AppName[74829:1307] The user has clicked the update button
2011-08-18 16:04:25.303 AppName[74829:1307] refresh button not init
2011-08-18 16:04:25.304 AppName[74829:1307] Buffer is currently:(null)
Что бы указывало на то, что aBuffer был (auto?) освобожден?
Есть идеи, почему это будет делать это?Сначала я подумал, что у меня есть два разных объекта, один из которых я создал, запустив NSWindowController из исходного контроллера:
@interface AppName_AppDelegate : NSObject
NSMutableArray *globalStatusArray;
@implementation AppName_AppDelegate
if ( summaryWindow ) {
[summaryWindow release];
} // end if
summaryWindow = [[SummaryWindowController alloc] initWithWindowNibName:@"SummaryWindow" owner:globalStatusController];
[summaryWindow showWindow:self];
[summaryWindow setGlobalStatusArray:globalStatusArray];
И тот, который был создан при загрузке пера, идентичные, но разные объекты, однако теперь я неНе думаю, что это так, поскольку я больше не вижу дубликатов NSLogs, поэтому я предполагаю, что это просто какая-то основная проблема с памятью с NSMutableArray (s)?