gpt4 book ai didi

Objective-C/Cocoa 创建发布顺序?

转载 作者:行者123 更新时间:2023-12-03 18:06:25 24 4
gpt4 key购买 nike

我只是好奇对象释放的顺序是否应该反射(reflect)它们在层次结构中的顺序:

// Psuedo code
alloc OBJ_001;
alloc OBJ_001 > OBJ_002;
alloc OBJ_001 > OBJ_002 > NSSting;

release NSString;
release OBJ_002;
release OBJ_001;

我很确定它应该(对我来说有意义),但到目前为止在我的学习中还没有看到任何提及这一点。

加里

最佳答案

没关系。我假设您的意思是 OBJ_001 拥有 OBJ_002 拥有 NSString 实例,并且您拥有所有三个对象(与 OBJ_002 共同拥有 NSString 并共同拥有) - 拥有 OBJ_002OBJ_001)。

以相反的顺序进行:

  1. 释放 NSString 实例:没有任何反应,因为 OBJ_002 仍然拥有它。
  2. 释放 OBJ_002:什么也不会发生,因为 OBJ_001 仍然拥有它。
  3. 释放OBJ_001:释放OBJ_002,从而释放NSString。所有三个都解除分配。

按照相同的顺序执行:

  1. 释放OBJ_001:释放OBJ_002,然后解除锁定。 OBJ_002 仍然存在,因为您仍然拥有它。
  2. 释放OBJ_002:释放 NSString,然后解除锁定。 NSString 仍然存在,因为您仍然拥有它。
  3. 释放 NSString 实例:它会解除锁定。

无论哪种方式,所有三个实例都会解除分配。没有什么区别。

我更喜欢相反的顺序,但这纯粹是一种风格选择。

关于Objective-C/Cocoa 创建发布顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1783346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com