我终于明白我是否必须释放一个对象,以及如何在一个简单的应用程序中保持我的保留计数尽可能低(通过知道该对象是否返回一个已经调用的额外“保留”)。因此,NARC 规则在这方面运作良好。
另一方面,我不知道是retain
(通常使用保留属性)还是仅使用assign
实例变量。那里有经验法则吗?我只知道两个:
- 如果我在我的类中创建了实例(例如,在 init 中),那么我应该保留它并在
dealloc
. - 代表被分配,而不是保留
但我不明白的是我是否应该保留从另一个实例传递过来的东西。我知道风险是保留计数下降到零,我只能拿着袋子(或留下许多额外的袋子和内存),但是......我应该如何组织我的应用程序以免发生这种情况?
我看过一些相关的问题,但没有一般性。
当我在这里时:添加到 aUIWindow
或UIView
我个人不保留的东西怎么办?如果他们的超级视图从所有超级视图中删除,“自然”保留的实例会被释放吗?