Cocos2d iphone 是否将GKSession传递给新的CCLayer对象?

Cocos2d iphone 是否将GKSession传递给新的CCLayer对象?,cocos2d-iphone,gamekit,Cocos2d Iphone,Gamekit,所以我在GameKit中添加了一些本地蓝牙网络,下面是我想象中的一些问题,希望你能告诉我为什么它们是虚构的: 我的GKPickerController由我的菜单启动,这是一个被推送到CCSharedDirectory的CCLayer对象。一旦GKPickerController建立了连接,它将GKSession传递给我的菜单层 所以现在整个会话属于我的菜单,但我想把数据放到其他CCLayer对象中(比如游戏本身!)。如何使GKSession全球化?我可以简单地添加一个方法并将整个会话传递给新的C

所以我在GameKit中添加了一些本地蓝牙网络,下面是我想象中的一些问题,希望你能告诉我为什么它们是虚构的:

我的GKPickerController由我的菜单启动,这是一个被推送到CCSharedDirectory的CCLayer对象。一旦GKPickerController建立了连接,它将GKSession传递给我的菜单层

所以现在整个会话属于我的菜单,但我想把数据放到其他CCLayer对象中(比如游戏本身!)。如何使GKSession全球化?我可以简单地添加一个方法并将整个会话传递给新的CCLayer子类吗?这会保留整个会议吗


提前谢谢你,我玩得很开心

为什么不使用sharedInstance方法创建一个类,并让该类执行所有全局操作

比如:

@interface GameController : NSObject {
   GKSession *gamekit_session;
}

+ (GameController *)sharedInstance;

- (void)initGameKitSession:(NSDictionary *)config;

- (GKSession *)getGameKitSession;

- (BOOL)isMyKittenAlive;

- (void)shutdownTheInternet:(BOOL)orly;

- (float)getGlobalWarmingTemperature;

- (void)doSomeOtherGlobalStuff;

@end

这样,您的所有CClayer都可以通过调用
[[GameController sharedInstance]getGameKitSession]访问GKSession。使用此技术比传递
GKSession
更安全、更优雅(我无法想象您将进入的保留/释放地狱…)

我真的很想知道这一点。。。我想我只是不完全理解类方法。我的印象是,如果你调用sharedInstace(在你的例子中),你会得到一些只有类定义的持续响应。您告诉我的是,它将传递给我原始GameController实例中分配的任何内容?如果GameController有多个实例呢?编译器如何知道如何响应我的[[GameController sharedInstance]getGameKitSession]调用?@DanF您只需实现sharedInstance方法,即可创建实例一次并将其存储在静态变量中。第二次调用时,只需返回静态变量。由于您是使用它的人,您应该约束自己始终使用sharedInstance方法,而不是alloc/init方法。看看CCDirector是如何实现sharedDirector方法的。这是相同的概念,这就是静态的含义!引用sharedDirector非常有意义。作为一个非常新的程序员,我仍然有信心去挖掘和逆向工程我不懂的方法。我真的很感激你的指导,缺少全局变量真的让我望而却步。