【问题标题】:iphone parent-child objects relationshipiphone父子对象关系
【发布时间】:2011-05-26 16:51:09
【问题描述】:

我有一个“NewsViewController”,它有一个名为“postViewController”的 PostViewController 类型的属性。我想从 PostViewController 内部调用 NewsViewController 类的方法。最简单的方法是什么?

在谷歌搜索该问题后,我似乎应该使用委托或发送通知,但我希望有一种更简单的方法来做到这一点,例如 [self.parent parentMethod]...

请告诉我有一种更简单的方法可以做到这一点! :) (如果没有请解释原因!)

【问题讨论】:

  • 您几乎涵盖了所有常见的方法,传入父对象并使用 [self.parent parentMethod] 可能不是最好的最可扩展的方法,但它确实有效这是最后最重要的事情。我建议学习委托模式或观察者模式(您提到的前两个),因为它们会成为以后非常宝贵的工具。
  • “传入父对象”到底是什么意思?
  • NewsViewController 中的方法可以是静态的吗?如果是这样,那么您将不需要 PostViewController 中的实例。此外,如果方法可以是静态的,也许应该将其重构为实用程序或帮助类以减少耦合。

标签: iphone parent-child


【解决方案1】:

似乎我应该使用委托或发送通知,但我希望有更简单的方法来执行此操作,例如 [self.parent parentMethod]

代表,在其最基本的级别。在处理parentMethod 消息的类型的子对象上创建一个属性。在实例化子对象后,您的父级将 self 分配给它,或者您的子对象公开了一个 init... 方法,可以让您将其传入。

【讨论】:

    【解决方案2】:

    使用超级关键字:[super parentMethod]

    看到这个答案:What exactly is super in Objective-C?

    【讨论】:

    • 那是子类显式调用它们的超类。这个问题的部分问题是术语“父母”和“孩子”的定义。他可能是指视图和子视图,还是导航控制器堆栈上的视图控制器......
    • 是的,我的问题不够清楚,这就是我改写它的原因。你是对的,我不想从子类中调用超类的方法。我需要从对象的属性中调用对象的方法...我很难正确编写它,阅读我编辑的第一篇文章可能会有所帮助。
    • 问题完全变了。我认为我不应该投反对票。
    猜你喜欢
    • 2017-09-05
    • 1970-01-01
    • 2011-04-21
    • 2021-01-22
    • 2021-12-05
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多