我很好奇,如果为对象发布表达的顺序应反映其在层次结构中的顺序相反:
// Psuedo code
alloc OBJ_001;
alloc OBJ_001 > OBJ_002;
alloc OBJ_001 > OBJ_002 > NSSting;
release NSString;
release OBJ_002;
release OBJ_001;
我很确定它应该(对我有意义),但到目前为止我的学习中还没有提到这一点。
加里
答案 0 :(得分:1)
没关系。我假设您的意思是OBJ_001
拥有OBJ_002
拥有NSString实例,并拥有所有三个对象(与OBJ_002
共同拥有NSString并与{共同拥有OBJ_002
{1}})。
按相反顺序执行:
OBJ_001
仍然拥有它。OBJ_002
:没有任何结果,因为OBJ_002
仍然拥有它。OBJ_001
:它释放OBJ_001
,释放NSString。全部三个dealloc。以相同的顺序执行:
OBJ_002
:它释放OBJ_001
,然后释放。 OBJ_002
仍然存在,因为您仍然拥有它。OBJ_002
:它释放NSString,然后释放。 NSString仍然存在,因为你仍然拥有它。无论哪种方式,所有三个实例都是dealloc。没有区别。
我更喜欢相反的顺序,但这纯粹是一种风格选择。
答案 1 :(得分:0)
我不这么说,只要你完成使用它,你可以随时发布它。