方法不能退出并返回数据

iOS 码拜 9年前 (2016-06-04) 1094次浏览
//代码功能是接收定位信息
– (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

呵呵,真看不懂

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明方法不能退出并返回数据
喜欢 (0)
[1034331897@qq.com]
分享 (0)