web-dev-qa-db-fra.com

n'a pas pu exécuter de code de support pour lire les données de classe Objective-C dans le processus. au vrai appareil iPhone

lorsque cette méthode basée sur un objectif c appelle dans Simulator, peu importe… .. Mais dans un véritable appareil iPhone, elle se produit 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.

voici le 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

J'ai essayé de corriger ce code de plusieurs types.

  • retourne d'autres types.
  • enregistrer NSData dans des fichiers et ne rien renvoyer. lisez-le dans Swift.

Tous mes essais ne peuvent pas résoudre les problèmes: pas de problème dans Simulator, la mort dans un appareil réel - iPhone 6 avec iOS 11.3.1

EDIT) joindre la capture d'écran: Autres drapeaux de l'éditeur de liens enter image description here

4
myoungjin

J'ai eu le même message d'erreur et l'ai tracé jusqu'à ma déclaration de tableau:

private var boundaries = [CLLocationCoordinate2D]()

J'ai modifié la déclaration pour déclarer explicitement les limites en tant que tableau CLLocationCoordinate2D comme ceci:

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

Cette déclaration a réduit au silence le message d'erreur. 

Dans votre cas, vous utilisez une ancienne méthode c, malloc pour votre tampon au lieu de laisser Swift gérer votre mémoire, alors peut-être que le problème Ou éventuellement si vous déclariez explicitement déchiffré en tant que tableau prenant en charge le problème.

1
Michael

Il y a peut-être un problème de liaison avec le code Objective C. 

Essayez l'une des solutions suivantes:

  • Allez à votre projet
  • Ajoutez -ObjC à votre Autres drapeaux de lieur  
  • Activer les modules (C et ObjC) = Oui
1
Nirav Bhatt

Dans tous les cas, vous feriez mieux de définir un point d'arrêt d'exception… .. Vous pouvez obtenir un journal sur le blocage.

 enter image description here

1