2012-08-10 3 views
0

iOS 앱에서 GCDAsyncSocket을 사용하려고합니다. 나는 CocoaAsyncSocket의 위키에서 제공되는 모든 단계를 따라왔다. 나는 이미 너무 포함iOS 5.1에서 GCDAsyncSocket을 사용하여 데이터를 쓰려고하는 동안 오류가 발생했습니다.

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]; 

은 의존성을 프레임 워크 : 보안 & CFNetwork에서, 그리고 내 수업 각각의 위임에 포함 여기에 내가 뭘하는지입니다. 다른 구성을 사용해야합니까? 나는이 예제를 실행하면

이 오류 얻을 :

[NSMallocBlock bytes]: unrecognized selector sent to instance 0x6b7abe0 'NSInvalidArgumentException', reason: '-[NSMallocBlock bytes]: unrecognized selector sent to instance 0x6b7abe0'

을 그리고

const uint8_t *buffer = (const uint8_t *)[currentWrite->buffer bytes] + currentWrite->bytesDone; 

답변

0

시도의 사용이 데이터 문자열에서, 데이터를 변환하는 GCDAsyncSocket.m이 라인에서 발생

+(NSData *) DataToHex: (NSString *) string 
{ 
    string = [string stringByReplacingOccurrencesOfString:@" " withString:@""]; 
    int stringLength = string.length; 
    NSMutableData *hexStringArray = [[NSMutableData alloc] init]; 
    [hexStringArray setLength:0]; 
    unsigned char whole_byte; 

    char byte_chars[3] = {'\0','\0','\0'}; 
    int i; 
    for (i=0; i < stringLength/2; i++) 
    { 
     byte_chars[0] = [string characterAtIndex:i*2]; 
     byte_chars[1] = [string characterAtIndex:i*2+1]; 
     whole_byte = strtol(byte_chars, NULL, 16); 
     [hexStringArray appendBytes:&whole_byte length:1]; 
    }                  //this is auto way 

    return hexStringArray; 
} 
관련 문제