这是内存管理问题。
假设我有一个 View A,它有一个指向其 subview B 的指针。我使用 @property(nonatomic, retain)
引用 View B。
现在在 subview B 中,我需要一个指向它的父 View A 的指针。所以我使用另一个 @property(nonatomic, retain)
来引用它的父 View A。
这是我的担忧,我读过一篇文章Hold Me, Use Me, Free Me关于在 objective-c 中保留和释放内容。它提到了“保留周期”。所以它说 subview 不需要保留它的父 View ,实际上如果它这样做是多余的。这是否意味着在我的示例中, subview B 只需要使用 @property(nonatomic)
引用其父 View A?谢谢!
顺便说一句,如果我没有在 View A 的@property 中写保留,我是否需要在 dealloc 方法中[viewA release]
?
最佳答案
每个 subview 都有一个指向其父 View 的指针。它由 NSView
类管理。参见-[NSView superview]
。因此,您可以只使用 [self superview]
或 self.superview
并完全忽略内存管理。
如果您出于任何原因想要继续,您需要指定 superview 属性是一个分配属性以避免警告。您也不会在 -dealloc
中释放它,因为您从未保留过它。
简单地说: subview 不拥有它们的父 View 。
如果您正在为 iOS 编写代码,只需将 NSView
替换为 UIView
并重新阅读。
关于objective-c - 关于 subview 在 objective-C 中保留 superview 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3964593/