这是内存管理问题。
假设我有一个视图A,它有一个指向其子视图的指针B.我使用@property(nonatomic, retain)
参考视图B.
现在在子视图B中,我需要一个指针指向其超级视图A.所以我使用另一个@property(nonatomic, retain)
参考其超级视图A.
这是我的担忧,我读过一篇关于保留和发布目标c中的内容的文章Hold Me, Use Me, Free Me。它提到了 “保留周期” 。所以它说子视图不需要保留其超级视图,实际上如果它这样做会是多余的。这是否意味着在我的例子中,子视图B只需要使用@property(nonatomic)
参考其超级视图A? THX!
BTW,如果我没有在@property中为视图A写保留,我是否需要在dealloc方法中使用[viewA release]
?
答案 0 :(得分:3)
每个子视图都有一个指向其超级视图的指针。它由NSView
类管理。见-[NSView superview]
。因此,您可以使用[self superview]
或self.superview
并完全忽略内存管理。
如果由于某种原因想要继续,则需要指定superview属性是assign属性以避免警告。您也不会在-dealloc
中发布它,因为您从未保留它。
简单地说:子视图不拥有他们的超级视图。
如果您要为iOS编码,只需将NSView
替换为UIView
并重新阅读。
答案 1 :(得分:0)
现在在子视图B中,我需要一个指针 回到它的超级视图A.
你已经有了一个。使用[self superview]
。
答案 2 :(得分:0)
您的UIView不应该需要UIViewController。你想做什么?如果您还没有,请阅读Apple的模型 - 视图 - 控制器样式的文档。