web-dev-qa-db-fra.com

Erreur Apple Mach-O Linker (Id)

J'ai eu cette erreur pour la première fois, j'ai regardé autour de moi et je ne peux pas trouver de solution pour m'aider, j'ai nettoyé mon build et vérifié pour m'assurer que je compile pour le dernier firmware.

Cela est arrivé après que je me sois fatigué d’implémenter une solution d’atteignabilité trouvée sur ici J’ai importé les deux fichiers d’atteignabilité (.m/.h), puis ajouté ce code dans le fichier .m et l’animant dans le fichier. h des fichiers d'accessibilité

-(BOOL)reachable {
    Reachability*r =[Reachability reachabilityWithHostName:@"enbr.co.cc"];
    NetworkStatus internetStatus =[r currentReachabilityStatus];
    if(internetStatus ==NotReachable){
        return NO;
    }
    return YES;}

Après cela, j'ai appelé la fonction à partir de mes deux vues de viwcontrollers.

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];


    //-- Check Reachability START ---->
    Reachability *reach = [[Reachability alloc] init];

    if ([reach reachable]) {
            NSLog(@"Reachable");
    }
    else {
        NSLog(@"Not Reachable");
    }
     //-- Check Reachability END ---->
}

Aucune erreur n'a été produite jusqu'à ce que j'ai essayé de construire et d'exécuter dans le simulateur. C'est l'erreur que j'ai reçue :(

Ld /Users/iMac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Products/Debug-iphonesimulator/wizcode.app/wizcode i386 normal cd "/Users/iMac/Documents/Iphone applications/wizsanCode/wizsanCode.5/wizcode" setenv MACOSX_DEPLOYMENT_TARGET 10.6 setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"

/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 -Arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk -L/Utilisateurs/iMac/Bibliothèque/Développeur/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Products/Debug-iphonesimulator -F/Utilisateurs/iMac/Bibliothèque/Développeur/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Products/Debug-iphonesimulator -filelist . -mmacosx-version-min = 10.6 -Xlinker -objc_abi_version -Xlinker 2 -lz -framework CoreGraphics -framework MobileCoreServices -framework SystemConfiguration --framework CFNetwork --framework UIKit --framework Fondation -o /Users/iMac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Products/Debug-iphonesimulator/wizcode.app/wizcode

ld: symbole dupliqué _OBJC_IVAR _ $ _ Accessibilité.reachabilityRef dans /Users/iMac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Intermediates/wizcode.build/Debug-iphonesimulator/wizcode.build/Objects-normal/id et /Users/iMac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Intermediates/wizcode.build/Debug-iphonesimulator/wizcode.build/Objects-normal/id pour l'architecture i386 collect2: ld a renvoyé 1 commande d'état de sortie, commande /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 a échoué avec le code de sortie 1 ld: symbole en double _OBJC_IVAR _ $ _ Accessibilité.réaisonnabilitéRef dans /Users/iMac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Intermediates/wizcode.build/Debug-iphonesimulator/wizcode.build/Objects-normal/id et /Users/iMac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Intermediates/wizcode.build/Debug-iphonesimulator/wizcode.build/Objects-normal/id pour l'architecture i386

Commander /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 a échoué avec le code de sortie 1

12
C.Johns

Donc, le problème a été résolu.

Ce qui s’est passé, c’est quand j’ai importé les fichiers d’atteignabilité dans ma construction, il se passait quelque chose d’amusant et que j’ai supprimé les fichiers d’atteignabilité déjà utilisés dans ma construction, qui étaient utilisés par les méthodes ASIHTTPRequest "all see I" utilisées pour transporter mes données. qui a tout foiré.

Bref, j'ai remplacé les fichiers et tout fonctionne bien. J'ai également découvert qu'ASSIHTTPTequest prenait soin de l'accessibilité pour moi :) c'est vraiment cool.

8
C.Johns

Vérifiez si SystemConfiguration est lié correctement. Quoi qu'il en soit, nettoyez votre code:

+ (BOOL)reachable {
    Reachability *r = [Reachability reachabilityWithHostName:@"enbr.co.cc"];
    NetworkStatus internetStatus = [r currentReachabilityStatus];
    return internetStatus != NotReachable;
}

Et appelez simplement [Reachability reachable] où vous le souhaitez. Cela corrige également une fuite de mémoire que vous avez.

2
Anton

Juste pour ajouter à cela, cela m'est arrivé après avoir régénéré des sous-classes gérées et cela n'a pas réellement écrasé les sous-classes existantes, mais simplement créé de nouvelles copies. Je viens de supprimer les deux et régénéré et tout était bon.

1
Alan

J'ai eu ce code dans l'un de mes UIViewController et le supprimer a résolu ce bogue. Quel message d'erreur stupide et pas clair du tout

NS_ENUM(NSInteger, Mode) {
    Assessments = 0,
    Onboarding
};
0
coolcool1994

Après avoir modifié mon modèle de données principal, j'ai supprimé toutes les sous-classes NSManagedObjectModel (générées automatiquement) et les ai créées à nouveau. Une fois qu'ils ont tous été créés, je les ai glissés dans un dossier de groupe dans XCode ... et j'ai eu le beachball qui tournait plus longtemps que d'habitude.

La prochaine fois que j'ai essayé de courir, cela a échoué avec l'erreur "Mach-O-Linker" (Id). Après avoir lu d’autres réponses, j’ai pensé que cela pouvait avoir quelque chose à voir avec le fait que les classes NSMObj ne se déroulent pas comme prévu. Je les ai supprimés, quittés, ouverts, générés et placés dans leur dossier de groupe habituel ... et Viola! pas d'erreur Mach-O.

Je vois que le problème est résolu, mais je poste ceci juste pour l'indexer sous la bonne question. Dans mon cas, la suppression et la régénération (via le menu de l'éditeur) des sous-classes d'objet géré ont résolu le problème.

0
James LeMay

Retirez-le puis ajoutez-le à nouveau. Travaille pour moi. :RÉ

0
user1471316

Assurez-vous que vous utilisez YourApp.xcworkspace au lieu du fichier .xcodeproj. J'ai eu le même problème quand j'ai exécuté le fichier .xcodeproj. Exécuter .xcworkspace a résolu le problème et l’erreur a disparu.

0
Alexander

Cela se produit lorsque j'ajoute un cadre d'analyse tiers à mon projet. Quand je vérifie avec l'info du framework, il n'est pas correctement copié sur le disque. Je télécharge le nouveau framework et le copie dans le projet et maintenant il n'y a plus d'erreur. 

0
Gaurav