代码之家  ›  专栏  ›  技术社区  ›  sbs

关于objective-C中子视图保留超视图的问题

  •  0
  • sbs  · 技术社区  · 14 年前

    这是内存管理问题。

    @property(nonatomic, retain) 参考视图B。

    现在在子视图B中,我需要一个指针指向它的超视图a @属性(非原子,保留)

    我担心的是,我读过一篇文章 Hold Me, Use Me, Free Me “保留周期” . 所以它说一个子视图不需要保留它的超视图,实际上如果它这样做的话它是多余的。这意味着在我的例子中,子视图B只需要使用 @property(nonatomic) 参考它的超级视图A?谢谢!

    顺便说一下,如果我没有在视图A的@property中写retain,我是否需要 [viewA release]

    3 回复  |  直到 14 年前
        1
  •  3
  •   Jeremy W. Sherman    14 年前

    每个子视图都有指向其超视图的指针。它由 NSView 上课。见 -[NSView superview] . 所以你可以用 [self superview] self.superview 完全忽略内存管理。

    如果出于任何原因要继续当前的状态,则需要指定superview属性是assign属性,以避免出现警告。你也不会把它放进去 -dealloc 因为你从未保留过它。

    简单地说:子视图不拥有它们的超视图。

    NSView公司 UIView 再读一遍。

        2
  •  0
  •   NSResponder    14 年前

    指向它的超级视图A。

    [self superview] .

        3
  •  0
  •   Peyman    14 年前

    你的UIView不需要UIViewController。你想干什么?如果您还没有,请阅读苹果关于模型-视图-控制器样式的文档。