我有一个关于已在不同对象中实例化的消息传递对象的查询。 具体来说,我希望将“gamestate”对象与我的“GLview对象”分开,并能够从另一个内部调用属于每个对象的方法。 实现这一目标的最佳方式是什么?
提前致谢;)
答案 0 :(得分:1)
有几种方法可以实现这一目标。
最明显的是,您的超类可能会定义引用其属性的属性(子对象,正如您所描述的那样)。例如,[[gamestate subObject] doSomething],其中'subObject'是指向要发送消息的对象的合成属性。
如果您想要更松散的耦合,请考虑使用委派模式或注册通知。
您的嵌套对象可以定义委托协议,在适当的时候调用它的委托方法。如果另一个对象符合协议并被指定为委托,它将收到消息。
最后,对象可以注册通知。对象A可以发布通知(例如,“发生的事情”),并且对象B可以注册以获取通知(例如,当您收到通知'发生的事情'时执行方法X)。