我正在尝试在我的 iOS 应用程序中使用 GCDAsyncSocket。我一直在遵循 CocoaAsyncSocket 的 wiki 中提供的所有步骤。这是我正在做的事情:
GCDAsyncSocket socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
NSError *err = nil;
if (![socket connectToHost:@"192.168.0.129" onPort:2811 error:&err]) // Asynchronous!
{
// If there was an error, it's likely something like "already connected" or "no delegate set"
NSLog(@"I goofed: %@", err);
}
uint8_t buffer[2] = "1\n";
NSData *data = [NSData dataWithBytes: &buffer length: sizeof(buffer)];
[socket writeData:data withTimeout:10 tag:1];
我已经包含了框架依赖项:Security 和 CFNetwork,并在我的课程中包含了各自的委托。我需要任何其他配置才能使用它吗?
当我运行这个例子时,我得到这个错误:
[ NSMallocBlock字节]:无法识别的选择器发送到实例 0x6b7abe0 'NSInvalidArgumentException',原因:'-[ NSMallocBlock字节]:无法识别的选择器发送到实例 0x6b7abe0'
它发生在 GCDAsyncSocket.m 的这一行
const uint8_t *buffer = (const uint8_t *)[currentWrite->buffer bytes] + currentWrite->bytesDone;