не удалось выполнить код поддержки для чтения данных класса Objective-C в процессе. на реальном устройстве iPhone - PullRequest
0 голосов
/ 15 мая 2018

когда этот вызов метода на основе цели в Simulator, это не имеет значения. Но в реальном устройстве 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;
}

enter image description here enter image description here

Я пытался исправить этот код несколькими типами.

  • вернуть другие типы.
  • сохранить NSData в файлы и ничего не возвращать. прочитайте это быстро.

Все мои попытки не могут решить проблемы: нет проблем в симуляторе, смерть в реальном устройстве - iPhone 6 с iOS 11.3.1

РЕДАКТИРОВАТЬ) прикрепить скриншот: Другие флаги компоновщика enter image description here

Ответы [ 3 ]

0 голосов
/ 08 июля 2018

У меня было то же сообщение об ошибке и оно прослежено до объявления моего массива:

private var boundaries = [CLLocationCoordinate2D]()

Я изменил объявление, чтобы явно объявить границы в виде массива CLLocationCoordinate2D, например:

private var boundaries:[CLLocationCoordinate2D] = [CLLocationCoordinate2D]()

Это объявление заставило замолчать сообщение об ошибке.

В вашем случае вы используете старый метод c malloc для буфера вместо того, чтобы позволить swift управлять вашей памятью, так что, возможно, в этом проблема. Или, возможно, если вы явно объявили расшифрованный как массив, который позаботился бы о проблеме.

0 голосов
/ 08 октября 2018

В любом случае вам лучше установить точку останова исключения.Вы можете получить журнал об аварии.

enter image description here

0 голосов
/ 15 мая 2018

Возможно, проблема с кодом Objective C.

Попробуйте выполнить одно из следующих действий:

  • Перейти к вашему проекту
  • Добавьте -ObjC к вашим другим флагам компоновщика
  • Включить модули (C и ObjC) = Да
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...