在该过程中无法执行支持代码以读取Objective-C类数据。在真正的iPhone设备上

myo*_*jin 11 iphone ios

当在Simulator中调用此基于目标C的方法时,没关系。但是在真正的iPhone设备中,Thread 1: signal SIGABRT

warning: could not execute support code to read Objective-C class data in the process. This may reduce the quality of type information available.

这是代码

+ (NSData *)aesDecrypt:(NSURL *)url :(NSString *)key {

NSData *data = [NSData dataWithContentsOfURL: url];
if (data == nil) {
    NSLog(@"file not found");
    return nil;
}

char keyPtr[kCCKeySizeAES128];
bzero(keyPtr, sizeof(keyPtr));

[key getCString:keyPtr maxLength:sizeof(keyPtr)];

size_t bufferSize = [data length] + kCCBlockSizeAES128;
size_t decryptedBytesSize = 0;

void *buffer = malloc(bufferSize);

CCCryptorStatus result = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding, keyPtr, kCCKeySizeAES128, keyPtr, [data bytes],
        [data length], buffer, bufferSize, &decryptedBytesSize);

NSData *decrypted = [NSData dataWithBytes:buffer length:bufferSize];

NSError *error;

if (kCCSuccess != result) {
    NSLog(@"aes decrypt error");
    return nil;
}

return decrypted;
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明 在此处输入图片说明

我试图修复几种类型的代码。

  • 返回其他类型。
  • 将NSData保存到文件,什么也不返回。迅速阅读。

我所有的尝试都无法解决问题:模拟器中没有问题,真实设备中没有设备-具有iOS 11.3.1的iPhone 6

编辑)附加屏幕截图:其他链接器标志 在此处输入图片说明

Nir*_*att 7

Objective C 代码可能存在链接问题。

尝试以下方法之一:

  • 转到您的项目
  • 将 -ObjC 添加到其他链接器标志
  • 启用模块(C 和 ObjC) = 是

  • @Bhatt 我检查“其他链接器标志”有“-ObjC”,“启用模块(C 和 ObjC)”是“是”。它已经完成了。问题仍未解决 (2认同)

Mic*_*el 2

我有同样的错误消息并将其追溯到我的数组声明:

private var boundaries = [CLLocationCoordinate2D]()
Run Code Online (Sandbox Code Playgroud)

我更改了声明以将边界显式声明为 CLLocationCooperative2D 数组,如下所示:

private var boundaries:[CLLocationCoordinate2D] = [CLLocationCoordinate2D]()
Run Code Online (Sandbox Code Playgroud)

该声明使错误消息保持沉默。

在你的例子中,你使用的是旧的c方法,malloc作为你的缓冲区,而不是让swift管理你的内存,所以也许这就是问题所在。或者,如果您明确声明已解密为数组,则可能会解决该问题。