Iphone 在iOS游戏套件中,receivedata:fromPeer:inSession:context是代理协议的一部分吗?

Iphone 在iOS游戏套件中,receivedata:fromPeer:inSession:context是代理协议的一部分吗?,iphone,objective-c,ios,delegates,gamekit,Iphone,Objective C,Ios,Delegates,Gamekit,通常,Xcode中的autocomplete会自动完成该类的方法名,如果该类在某个其他对象的委托中,则会自动完成方法名,如下所示: @interface ViewController : UIViewController <UIAlertViewDelegate, GKPeerPickerControllerDelegate> 它似乎不是任何委托方法的一部分,无论是通过Xcode的自动完成

通常,Xcode中的autocomplete会自动完成该类的方法名,如果该类在某个其他对象的委托中,则会自动完成方法名,如下所示:

@interface ViewController : UIViewController <UIAlertViewDelegate, 
                                              GKPeerPickerControllerDelegate>
它似乎不是任何委托方法的一部分,无论是通过Xcode的自动完成还是在任何文档中?如果它不是委托的一部分,为什么它与所有其他委托方法的工作方式不同


更新:如果我搜索所有头文件:

grep -r receiveData /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk
包含该行的唯一文件是:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks/GameKit.framework/Headers/GKSession.h:-(void)setDataReceiveHandler:(id)handler with context:(void*)context;//SEL=-receiveData:fromPeer:inSession:context:


因此它只显示在注释中…

类中
setDataReceiveHandler:withContext:
方法的文档说明:

处理程序必须实现具有以下签名的方法:

-(void)接收数据:(NSData*)来自对等方的数据:(NSString*)对等方插入:(GKSession*)会话上下文:(void*)上下文

这并不能回答您的问题,即为什么这个方法没有像普通委托方法那样实现。我认为此实现提供了更大的灵活性,因为您可以让一个对象响应管理连接的委托方法,同时指定另一个对象来处理连接完成后的传入数据


无论如何,希望这能回答这个方法在哪里定义的实际问题,这让我挠头了一段时间。

我怀疑这是不同的,因为API可以追溯到Objective C的早期版本(最初,协议的强类型较少,大多数回调方法都是以这种特殊的、非编译器检查的方式定义的)

大多数(几乎所有)的核心API都已经更新,所以所有协议都是显式的,所有回调都是类型化的——我想他们错过了这个

grep -r receiveData /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk