我正在使用 AsyncSocket 类在游戏服务器上工作。在建立连接并将套接字对象处理给播放器后,我试图将读取/写入从服务器对象重新定位到播放器对象:
这是来自服务器的连接方法
- (void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket {
[self logMessage:@"Incoming Client" withColor:[NSColor greenColor]];
Player *p=[[Player alloc] initWithConnection:newSocket];
[_players addObject:p];
[p release];
[[[NSApplication sharedApplication] dockTile] setBadgeLabel:[NSString stringWithFormat:@"%lu",[_players count]]];
[tableView reloadData];
}
在我的 Player.m 类中,我有以下initWithconnection:
方法(摘录):
- (id)initWithConnection:(AsyncSocket *)connection {
self = [super init];
if (self) {
...
_connection=[connection retain];
if ([_connection canSafelySetDelegate]) {
[_connection setDelegate:self];
}
}
return self;
}
我正在实现所需的委托方法(实际上,我只是从以前的服务器对象复制并粘贴它们来测试它),但在我看来,该setDelegate:
方法根本无法按预期工作。它不会被调用。将委托设置为服务器对象一切正常(我只需将传入消息传递给正确的播放器对象)。
有人知道我在这里做错了什么吗?
感谢:D