– (void)readMsg {
double latitude = [_dis read32Byte];
double longitude = [_dis read32Byte];
}
//read32Byte方法,是对 data(NSMutableData类型) 的截取
-(double)read32Byte {
NSData* _d = [data subdataWithRange:NSMakeRange(length, 32)];
NSLog(@”length:%d”,length);
length += 32;
double value = doubleFrom32Byte(_d);
NSLog(@”%.2f”,value);//value是的值已经获取到
return value;
}//在此处方法不能退出并返回数据, value 随意改成一个 double 数据是可以退出并返回数据的,不清楚为什么,在”}”处报错:Thread1:signal SIGABRT error ,且日志没有任何提示,只有(lldb) 没有解决问题的头绪,就直接放弃方法直接把代码写死,替换 read32Byte方法:
– (void)readMsg {
int length = 29;
NSData *_d = [self.dis->data subdataWithRange:NSMakeRange(length, 32)];
double latitude = doubleFrom32Byte(_d);
length += 32;
_d = [self.dis->data subdataWithRange:NSMakeRange(length, 32)];
double longitude = doubleFrom32Byte(_d);
NSLog(@”%.2f”,longitude);
NSLog(@”%.2f”,latitude);
}
真机测试经纬度都接收到了,功能实现了,找不到问题所在,想着后面再解决[s:13][s:13]
今天却突然出现以下问题:
真机测试:
第一次运行出现: error: memory read failed for 0xa8af9a00
第二次运行出现: signal SIGABRT error ,且日志没有输出,找不到问题[s:3][s:3][s:3]
找备份代码,也是这样.
换手机测试,memory read failed没有再次出现,直接是signal SIGABRT error ,以为是手机的问题.在网络上搜索,貌似还有代码原因造成memory read failed
那么,本人的问题:
1.怎么使read32Byte方法退出并返回数据?
2.是什么原因造成 memory read failed 的呢?哪些情况会造成 memory read failed ?
3.signal SIGABRT error ,且日志没有输出,该怎么办?
40