gpt4 book ai didi

objective-c - 关于 subview 在 objective-C 中保留 superview 的问题

转载 作者:行者123 更新时间:2023-11-28 20:47:43 24 4
gpt4 key购买 nike

这是内存管理问题。

假设我有一个 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/

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