我在secondObject的帮助下创建了一个firstObject。现在我释放了secondObject会对firstObject发生什么。 这是我的代码。
SecondObject *secondObject = [[SecondObject alloc]init];
FirstObject *firstObject = [[FirstObject alloc]initWithSecondObject:secondObject];
[secondObject doSomethings];
[firstObject doSomeThings];
[secondObject release];
答案 0 :(得分:2)
除非secondObject
引用了firstObject
,否则firstObject
不会发生任何事情。
答案 1 :(得分:1)
如果firstObject
需要在其secondObject
方法之外保留对initWithSecondObject:
的引用,则应保留secondObject
。即使您在上面的代码中发布它,也会阻止secondObject
被释放。当你发布一个对象时,你会说:“我已经完成了这个。”但是,如果当前没有其他对象正在使用它,则该对象将被释放(由保留计数确定,而不是您应该查看它)。