iPhone SDK – NSStreamEventHasBytesAvailable / appendBytes:崩溃

前端之家收集整理的这篇文章主要介绍了iPhone SDK – NSStreamEventHasBytesAvailable / appendBytes:崩溃前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
免责声明:我是 Xcode / iPhone SDK Noob.

我正在尝试建立与现有服务器的客户端TCP / IP连接.连接后,我希望收到一些有关服务器的数据(版本等).

建立连接后,NSStreamEventOpenCompleted事件将触发,因此我知道已建立连接.接下来,NSStreamEventHasBytesAvailable事件将触发,我正在执行以下代码.值71(int)存储在len中,我认为这是正确的.但是,行

[data appendBytes:&buffer length:len];

正在崩溃(我想).没有抛出实际错误,但我确实看到了__TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION__,即使我已经清楚地添加错误捕获:

case NSStreamEventHasBytesAvailable:
    {
        NSMutableData *data=[[NSMutableData alloc] init];

        uint8_t *buffer[1024];
        unsigned int len=0;

        len=[(NSInputStream *)stream  read:buffer maxLength:1024];
        if(len>0){  
            @try{
                [data appendBytes:&buffer length:len];
            }
            @catch(NSException *ex){
                NSLog(@"Fail: %@",ex); 
            }
            [statusLabel setText:[data stringValue]];
            //[bytesRead setIntValue:[bytesRead intValue]+len];
        }else{
            NSLog(@"No Buffer");
        }
        break ;
    }

解决方法

将缓冲区声明为:

uint8_t buffer[1024];

并附加为:

[data appendBytes:buffer length:len];

猜你在找的Xcode相关文章