@implementation TestClass
- (id) init
{
string = [[NSString alloc] init];
return self;
}
- (void) release
{
[string release];
}
@end
@implementation MainScreen
- (void) addItems
{
[myMutableArray addObject:[[[TestClass alloc] init] autorelease]];
}
- (void) release
{
[myMutableArray release];
}
我的問題是當我們釋放myMutableArray時,它會調用TestClass的release方法嗎?當包含這些對象的NSMutableArray被釋放時,如何釋放組合對象?
嗨Thankz指出特殊情況。我從來沒想過這點。但我的疑問是,當我們將TestClass對象添加到它的類型變爲id的數組中時,我相信。所以當我們釋放數組時,NSObject的釋放方法被調用從而泄漏字符串,或者它會調用TestClass的釋放方法。 – Aaron
首先:這不是特例,它實際上是你在你的問題中記錄的情況。它不會奇蹟般地改變類型。面向對象編程的重點是對象指定自己的行爲,所以如果你發送一個消息的對象,你會得到該對象的行爲,沒有其他。 – 2011-11-04 10:28:08
對不起,我對脆弱的Base類問題感到困惑。 Thatz y我問.. – Aaron