我得到了一个非常神奇的错误(即使我不相信计算机世界中有魔法><),我会用长篇文章解释一下,请让他们全神贯注地阅读它们并帮助我出去!!!!!
所以我正在研究一个与BLE外设通信的应用程序,向外设编写命令,我使用一种方法将十六进制字符串转换为NSData,就像这样
+ (NSData *)dataWithHexString:(NSString *)hexString
{
hexString = [hexString stringByReplacingOccurrencesOfString:@" " withString:@""];
NSMutableData * resultData= [[NSMutableData alloc] init];
unsigned char whole_byte;
char byte_chars[3] = {'\0','\0','\0'};
for (int i = 0; i < ([hexString length] / 2); i++) {
byte_chars[0] = [hexString characterAtIndex:i*2];
byte_chars[1] = [hexString characterAtIndex:i*2+1];
whole_byte = strtol(byte_chars, NULL, 16);
[resultData appendBytes:&whole_byte length:1];
}
return [NSData dataWithData:resultData];
}
它是一个NSData类别方法,我在网上的其他地方找到了,参数(hexString)应该被转换为一个有16个字节的命令,我需要逐个发送它们,这里是问题,
这个类方法(按类别实现)在我使用Xcode调试时效果很好(不是模拟器,而是在真正的iPhone中),
当我启动没有Xcode的应用程序时,这个类方法不能很好地工作(返回15个字节,我应该是16个字节),例如,我发送3个命令,并检查此方法的返回数据,第一个是16个字节,第二个是16个字节,第三个是15个字节,或者有时第二个是15个字节,
所以,这是我的问题......
是否有一种不同的,类似的方法和正常的方法?为什么如果我尝试不使用类别,它有效吗?
是否有与Xcode不同的调试,并且在没有Xcode的情况下启动?
为什么NSlog在这种情况下不显示?
提前致谢