首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >知道谁调用单例的方法-- objective C

问知道谁调用单例的方法-- objective C
EN

Stack Overflow用户
提问于 2011-01-05 07:58:32
回答 3查看 151关注 0票数 0

我正在设计一个有多个关卡的游戏。我有一个定义为单例(称为MasterScene)的CCLayer,我可以在其中处理暂停页面、过渡页面、球员得分横幅……所有的东西都是所有级别的。因此,在每个级别中,当用户按下暂停按钮时,将调用单例以显示与暂停页面相对应的CClayer。我的问题是,我想知道谁调用了单例(哪个级别) t。有什么方法可以做到这一点吗?谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-05 08:14:43

在不了解更多应用程序架构的情况下,我会建议三种可能的方法:

  1. 将级别编号(或指向level对象的指针等)作为参数传递给单例的方法。
  2. 让对象跟踪当前级别,这样它就已经知道了。(显然,这假设只有当前级别才能调用这些方法。但是我不确定为什么多个级别会有可用的pause buttons.)
  3. Don't使这个对象成为一个单独的对象。为每个级别创建一个实例。是否真的存在此对象需要跟踪的应用程序全局状态?如果您使用MasterScene来封装行为,而不是全局状态,那么拥有该类的多个实例并不会造成任何伤害(或者消耗大量的设备资源)。
票数 3
EN

Stack Overflow用户

发布于 2011-01-05 08:48:51

没有一种通用的方法可以像你要求的那样定位消息的来源。

然而,对于你的应用程序,有一些替代的架构可以解决这个问题,我鼓励你考虑一下。您所描述的听起来像是一堆相互依赖的类。你所有的级别都知道并使用这个MasterScene单例,现在你试图让这个单例也知道每一个级别?你的应用程序的每一部分都不需要知道其他的。

票数 1
EN

Stack Overflow用户

发布于 2011-01-05 08:56:29

你可以把它作为参数传入,例如:

代码语言:javascript
复制
@implementation Level30
-(void) pause;
{
    [[MasterScene getSingleton] pauseWithLevel:self];
}
@end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4599668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档