有时在请求网络数据时并没有返回NSData,而是返回OS_dispatch_data
NSData实际上是仅仅提供接口的类簇,并且有很多种特别的实现,推断OS_dispatch_data是这样一种实现
NSData is actually a class cluster which just provides the interface, and there are multiple special implementations for it around. It appears that OS_dispatch_data is such a special implementations made to pass data objects around blocks
OS_dispatch_data 是 dispatch_data_t (在iOS7和Mavericks上)可以用NSData无缝桥接,你可以很轻松的通过向下转型获得NSData
OS_dispatch_data is dispatch_data_t which has toll-free bridging with NSData on iOS 7 and Mavericks. You can simply cast it to NSData *.
So, in your case you can write:
NSData *dataCast = self.message.data;
NSString *dataString = [[NSString alloc] initWithData:dataCast encoding:NSUTF8StringEncoding];
一件小事引发的血案:当我们使用原生API发送一个Get请求时,首先想到下面的方法
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *task = [session dataTaskWithURL:[NSURL URLWithString:@"XXXX"] completionHandler:^(NSData * _Nullable data, NSURLResponse *