类之间信息传递的4种方式

<1>第一种办法

你可以让gameLayer包含一个hudLayer的引用,同时也可以让hudLayer包含一个gameLayer的引用。注意!这里问题出现了,如果两个类都包含彼此的强引用(所谓强引用就是retain),就会引起循环引用的情况,如果其中一个类包含的是弱引用,问题就不会出现。循环引用是使用引用计数管理内存的一个致命弱点,会导致资源永远得不到释放,而且查错起来非常麻烦。


<2>第二种办法

把gameScene做成一个单例,同时让gameScene包含gameLayer和hudLayer的弱引用,这样就可以直接通过[GameScene sharedInstance].gameLayer或者[GameScene sharedInstance].hudLayer来访问了。


<3>第三种办法

使用gameLayer->getParent()获得gameScene,再使用gameScene来获得hudLayer。


<4>第四种办法

使用CCNotificationCenter。当hudLayer注册它感兴趣的消息,当gameLayer需要通知hudLayer的时候,只需通过CCNotificationCenter发送一个对应的消息即可

你可能感兴趣的:(类之间信息传递的4种方式)