ios - 我们可以[ self 释放]吗?

标签 ios object release

它工作...它不会崩溃,而且它似乎可以满足我的需要。

这可能是我的应用程序的设计缺陷,但它是完成我需要的最简单的方法。基本上显示一个 View ,对象本身内的控件确定何时将其从父 View 中删除(此时需要释放)。

此时最简单的方法是[self release],这似乎可行。

但是,我知道对象所有权,并且我知道实例化一个释放自身的对象并不是一个好的对象所有权设计——即所有者类(实例化新对象的类)应该是一个释放它。然而,这将要求我编写回调所有者类的委托(delegate)方法,所有这些都只是为了释放对象。

有什么想法吗? :)

谢谢

最佳答案

Basically a view is displayed and controls within the object itself determine when it is removed from the superview (at which point it needs to be released).

通常,父 View 保留对 subview 的引用,当它被移除时,该引用将被释放。为什么需要重新发布?

如果您执行 [self release] 操作,您就是从其他一些代码(保留对该对象的引用)中删除该对象的所有权。如果你这样做,那段代码仍然会有一个对垃圾内存的非零引用。在我看来,应该将这种情况通知另一段代码(然后它还不如自己发布版本)。

Once added to the superview I can just release?

pattern you usually see在代码示例中是

UIView *view = [[UIView alloc] initWithFrame...];
[self addSubView:view];
[view release];

关于ios - 我们可以[ self 释放]吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7429126/

相关文章:

ios - NSDate 混淆 dateFromString 格式

ios - Firebase 通知未显示 IOS,但消息显示在控制台上

oop - Lua 元表和元方法 - 如何调用不同的成员函数

java - 将使用 JPanel 扩展的类添加到现有 JPanel

android - "C2D_message is not unique"尝试制作标志 apk

ios - 关闭 NSOutputstream & NSInputstream

python - PyGTK 应用程序的主类是否应该扩展 Gtk.Window?

android - PlayStore 不断拒绝应用更新以获得 MANAGE_EXTERNAL_STORAGE 权限,并且应用描述也没有更新

debugging - 发布/调试版本之间存在巨大的帧速率差异

ios - AVPlayer 的奇怪行为