只有没有Xcode的NSData类别bug

时间:2015-06-25 16:41:38

标签: ios objective-c iphone xcode bluetooth

我得到了一个非常神奇的错误(即使我不相信计算机世界中有魔法><),我会用长篇文章解释一下,请让他们全神贯注地阅读它们并帮助我出去!!!!!

所以我正在研究一个与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个字节的命令,我需要逐个发送它们,这里是问题,

  1. 这个类方法(按类别实现)在我使用Xcode调试时效果很好(不是模拟器,而是在真正的iPhone中),

  2. 当我启动没有Xcode的应用程序时,这个类方法不能很好地工作(返回15个字节,我应该是16个字节),例如,我发送3个命令,并检查此方法的返回数据,第一个是16个字节,第二个是16个字节,第三个是15个字节,或者有时第二个是15个字节,

  3. 如果我在不使用类别实现的情况下将其复制到我的代码上下文中,则此类方法可以正常工作, 附:如果我在类别方法中添加nslog,当我在没有xCode的情况下启动它时,它将不会显示(在设备控制台日志中)
  4. 所以,这是我的问题......

    1. 是否有一种不同的,类似的方法和正常的方法?为什么如果我尝试不使用类别,它有效吗?

    2. 是否有与Xcode不同的调试,并且在没有Xcode的情况下启动?

    3. 为什么NSlog在这种情况下不显示?

    4. 提前致谢

0 个答案:

没有答案