NSArray
和NSMutableArray
發送-retain
對象加入時,他們,所以適當的事情做的是-release
你添加的對象明確,或使用自動釋放的對象。
這裏是爲Tuner
類的-init
方法,一個簡單的例子:
- (id)init
{
NSInteger i;
Note *note;
self = [ super init ];
if (self) {
notes = [[ NSMutableArray alloc ] initWithCapacity: 88 ];
for (i = 0; i < 88; i++) {
note = [[ Note alloc ] initWithKey: i ];
[ notes addObject: note ];
[ note release ];
}
}
return(self);
}
您需要+alloc
每一個音符對象和-release
它,因爲它保留其添加到陣列。爲了消滅當你完成所有提示對象,請確保您的Tuner
類釋放陣列中的-dealloc
方法:
- (void)dealloc
{
[ notes release ]; // this sends release to all objects in the array, too
[ super dealloc ];
}
謝謝,與NSMutableArray或只是標準的NSArrays我需要在數組的末尾添加零?我在某處讀過這些內容,但不確定何時該做這件事。 – hrtachetosing 2011-05-17 15:25:28
'nil'被稱爲哨點值。它告訴接收者變量長度變量列表的末尾在哪裏。你只需要使用特定的'NSArray'(及其子類)和'NSDictionary'方法,如'-initWithObjects:',例如:'array = [[NSArray alloc] initWithObjects:a,b,c,nil];' 。由於'-initWithObjects:'接受任意數量的參數,因此需要通過某種方式告知接收方哪個參數是最後一個參數。 'nil'就是爲了這個目的。 – 2011-05-17 15:42:51
只是爲了澄清:'-addObject:'不需要定位零值,因爲您只需添加一個對象。 – 2011-05-17 15:45:32