【问题标题】:Objective C - Messaging objects within objects [closed]Objective C - 对象内的消息传递对象[关闭]
【发布时间】:2011-10-23 14:27:34
【问题描述】:

我有一个关于已在不同对象中实例化的消息传递对象的查询。 具体来说,我想将我的“游戏状态”对象与“GLview 对象”分开,并能够从另一个对象中调用属于每个对象的方法。 实现这一目标的最佳方法是什么?

提前致谢;)

【问题讨论】:

    标签: objective-c oop messaging


    【解决方案1】:

    有几种方法可以实现这一点。

    最明显的是,您的超类可以使用引用其属性的属性(如您所描述的子对象)来定义。例如,[[gamestate subObject] doSomething],其中 'subObject' 是一个综合属性,指向您要发送消息的对象。

    如果您想要更松散的耦合,请考虑使用委托模式或注册通知。

    您的嵌套对象可以定义一个委托协议,在适当的时候调用它的委托方法。如果另一个对象符合协议并被分配为委托,它将接收消息。

    最后,对象可以注册通知。对象 A 可以发布通知(例如,“发生某事”),对象 B 可以注册以获取通知(例如,当您收到“发生某事”的通知时执行方法 X)。

    【讨论】:

    • 感谢艾萨克,让它工作。我创建了属性引用以允许在对象外部访问实例变量。我获得了 glView 指针的副本并将其传递给我的渲染对象。注册通知看起来也很有希望,将检查一下!再次感谢。
    • 我很好奇,传递指针是向当前实例之外的对象发送消息的正确方法吗?我遇到了一个与触摸输入有关的问题,只有当我将 touchesbegan 保持在 GLview 中时,它似乎才起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多