【发布时间】:2015-06-07 22:52:52
【问题描述】:
当套接字接收到这样的数据时,我有一个回调方法......
+ (void) dataReceived:(NSData *)data {
NSData *dataCopy = [data copy];
NSString *msg = [[NSString alloc] initWithData:dataCopy encoding:NSUTF8StringEncoding];
NSLog(@"msg: %@", msg);
}
我可以在调试器中看到data 和dataCopy 都包含正确的字符串数据。 dataCopy 没有问题,但是当调用 msg 行时,我会炸毁这个。
2015-04-02 15:45:10.179 沙盒[15218:539849] -[__NSCFString 字节]: 无法识别的选择器发送到实例 0x7f9c71447870 2015-04-02 15:45:10.184 Sandbox[15218:539849] *** 由于未捕获而终止应用程序 异常'NSInvalidArgumentException',原因:'-[__NSCFString bytes]: 无法识别的选择器发送到实例 0x7f9c71447870'
我不明白,我可以看到数据是正确的,我认为制作副本是为了防止访问被覆盖的内存。知道这里发生了什么吗?
【问题讨论】:
标签: ios objective-c nsstring nsdata