0

我在 secondObject 的帮助下创建了一个 firstObject。现在我释放了第二个对象,第一个对象会发生什么。这是我的代码。

SecondObject *secondObject = [[SecondObject alloc]init];
FirstObject *firstObject = [[FirstObject alloc]initWithSecondObject:secondObject];
[secondObject doSomethings];
[firstObject doSomeThings];
[secondObject release];
4

2 回答 2

2

除非secondObjectfirstObject它释放的引用,否则不会发生任何事情firstObject

于 2012-05-14T05:31:12.427 回答
1

如果firstObject需要保留对secondObject超出其initWithSecondObject:方法的引用,则应保留secondObject. secondObject即使您在上面的代码中释放它,这也将防止被释放。当你释放一个对象时,你是在说:“我用完了这个。” 但是只有在当前没有其他对象使用它时才会释放该对象(由保留计数确定,而不是您应该查看它)。

于 2012-05-14T05:34:32.123 回答