我正在开发一款游戏,我想知道是否可以发送信号。
在第一关,玩家需要 3 件物品才能获胜
在第二关,玩家需要 5 件物品才能获胜
是否可以向特定对象抛出诸如“ItemTaken”之类的信号
- 知道水平
处理信号
所以它可以计算玩家是否达到了下一个级别
(我已经简化了事情,但有很多信号)
我正在开发一款游戏,我想知道是否可以发送信号。
在第一关,玩家需要 3 件物品才能获胜
在第二关,玩家需要 5 件物品才能获胜
是否可以向特定对象抛出诸如“ItemTaken”之类的信号
处理信号
所以它可以计算玩家是否达到了下一个级别
(我已经简化了事情,但有很多信号)
就内置 API 而言,您可以查看NSNotificationCenter
. 文档非常简单:您可以注册以观察通知,并发布由字符串标识的任意通知。所以你可以很容易地写出这样的东西:
[[NSNotificationCenter defaultCenter] postNotificationName:MyItemTakenNotification object:theTakenItem];
如果你想要更复杂的东西,你可以看看Reactive Cocoa。它是一个以更复杂的方式发送和响应信号的框架。(但是,我自己从未使用过它。)
有几种不同的方法。最简单的方法之一是使用NSNotifications
单例对象。
创建单例以侦听通知并在通知进入时对其进行处理。收到通知时,它将调用选择器方法:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(processItem)
name:@"kItemTaken"
object:nil];
并让应用在事件发生时发送通知:
[[NSNotificationCenter defaultCenter] postNotificationName:@"kItemTaken" object:nil];