@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