2015-04-02 160 views
-3

我有一个回调方法时套接字接收到这样的数据...异常解析复制到的NSString

+ (void) dataReceived:(NSData *)data { 
    NSData *dataCopy = [data copy]; 
    NSString *msg = [[NSString alloc] initWithData:dataCopy encoding:NSUTF8StringEncoding]; 
NSLog(@"msg: %@", msg); 
} 

我可以在这两个datadataCopy包含正确的字符串数据调试器看到的。 dataCopy是没有问题,但当msg线被调用时,我爆炸瓦特/这。

2015年4月2日15:45:10.179沙盒[15218:539849] - [__ NSCFString字节]: 无法识别的选择发送到实例0x7f9c71447870 2015年4月2日15 :45:10.184沙盒[15218: 539849 ***终止应用程序由于未捕获的 异常“NSInvalidArgumentException”,原因是:“ - [__ NSCFString 字节]:无法识别的选择发送到实例0x7f9c71447870”

我不明白,我可以看到数据是正确的,我认为使副本是防止访问被覆盖的内存。任何想法发生了什么?

回答

2

似乎你的“委托”方法被NSString而不是NSData调用。在这种情况下复制收到的对象不会帮助您,因为您只是将字符串复制到另一个字符串中。您需要深入了解并了解为什么dataReceived:没有收到预期的NSData对象。

+0

D'Oh。我想你是正确的。 – Ternary 2015-04-02 21:04:49