好吧,我一直在尝试创建我自己的GKSession对象,委托方法在控制台中给了我一个错误,我还没有想出如何修复这个错误。我想知道是否有人有任何建议或遇到过这个问题?*只需注意-变量peerStatus在我的代码中的其他地方定义。对等体可以被赋予"kServer“或"kClient”的状态。我更愿意将每一个都定义为GKSessionModeServer或GKSessionModeClient,因为我读到过,如果对等体使用GKSessionModePeer,性能时间实际上会更慢,因为它必须同时完成客户端和服务器的工作。
- (GKSession *)peerPickerController:(GKPeerPickerController *)picker sessionForConnectionType:(GKPeerPickerConnectionType)type {
if (peerStatus == kServer) {
GKSession *session = [[GKSession alloc] initWithSessionID:@"Josh_Land" displayName:nil sessionMode:GKSessionModeServer];
return [session autorelease];
}
else {
GKSession *session = [[GKSession alloc] initWithSessionID:@"Josh_Land" displayName:nil sessionMode:GKSessionModeClient];
return [session autorelease];
}
}整个错误代码是:
侦听端口56386 2009-06-30 10:31:41.892 GKTank17756:20b *由于未捕获的异常“”GKInvalidArgumentException“”正在终止应用程序,原因:“必须提供具有GKSessionModePeer模式的有效GKSession对象,或者在-peerPickerController:sessionForConnectionType:.的实现中创建返回”“nil”“的默认GKSession对象提供的对象为:已发送807902715个数据包:冲刺(0个数据包0字节):依赖(0个数据包0字节):rtry (0个数据包0字节):sack (0个数据包0字节):当前加权平均rtt (0 ms),会话模式: 0‘2452446779 -06-30 10:31:41.893 GKTank17756:20b堆栈:( 807902715,2009,807986683,807986522,927035842,927037074,927038407,815223834,927038949,9245,8562,814709201,815110321,815119058、815114270、814813151、814722763、814748641、839148405、807687520、807683624、839142449、839142646、814752238 )
发布于 2009-06-30 17:36:48
我实际上还没有使用GameKit实现任何东西,但只要看一下文档,就会发现只有在使用GKSessionModePeer的情况下才能使用GKPeerPickerController。如果你想使用GKSessionModeServer/Client,你需要直接处理会话和它们的代理。请参阅Implementing a Server和Connecting to a Service上的游戏工具包编程指南中的部分。
您的主要功能将围绕GKSessionDelegate方法展开
客户端和服务器模式下的-session:peer:didChangeState:和
服务器模式下的-acceptConnectionFromPeer:error:和-denyConnectionFromPeer:。
https://stackoverflow.com/questions/1064008
复制相似问题