'could not execute support code to read Objective-C class data in the process. at real iPhone device

when this objective-c based method call in Simulator, it doesn't matter. But in real iPhone device, it occurs 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.

here is code

+ (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;
}

enter image description here enter image description here

I tried to fix that code several types.

  • return other types.
  • save NSData to files, and return nothing. read it in swift.

All of my tries can't fix the problems: No problem in Simulator, death in real device - iPhone 6 with iOS 11.3.1

EDIT) attach screenshot: Other Linker Flags enter image description here



Solution 1:[1]

There maybe linking problem with Objective C code.

Try one of the following:

  • Go to your project
  • Add -ObjC to your Other Linker Flags
  • Enable Modules (C and ObjC) = Yes

Solution 2:[2]

In any case, you had better set a exception breakpoint. You can get a log about the crash.

enter image description here

Solution 3:[3]

Just a silly mistake but I was assigning a navigationController as the rootViewController of another UINavigationController.

Solution 4:[4]

the error of my code was that I set the class not to the whole file, but to the main view

correct place

wrong place

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Nirav Bhatt
Solution 2 Stephen Rauch
Solution 3 Pranav Gupta
Solution 4