Apple Mach-O 链接器 (Id) 错误

发布于 2024-11-25 11:17:26 字数 3609 浏览 2 评论 0原文

第一次遇到这个错误,我环顾四周,找不到可以帮助我的解决方案,我已经清理了我的构建,并检查以确保我正在编译最新的固件。

这是在我厌倦了实现在此处找到的可达性解决方案之后发生的 我导入了两个可达性文件 (.m/.h),然后将此代码添加到 .m 文件中,并在 . h 的可达性文件

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

之后,我从我的两个 viwcontrollers viewwillappear 方法中调用了该函数,如下所示。

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

直到我尝试在模拟器中构建并运行时,才产生错误。这是我收到的错误:(

LD /Users/imac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Products/Debug-iphonesimulator/wizcode.app/wizcode 普通i386 cd“/用户/imac/文档/Iphone 应用程序/wizsanCode/wizsanCode.5/wizcode" setenv MACOSX_DEPLOYMENT_TARGET 10.6 设置环境路径 “/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/Users/imac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Products/Debug-iphonesimulator -F/Users/imac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Products/Debug-iphonesimulator -文件列表 /Users/imac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Intermediates/wizcode.build/Debug-iphonesimulator/wizcode.build/Objects-normal/i386/wizcode.LinkFileList -mmacosx-版本-min=10.6 -Xlinker -objc_abi_版本 -Xlinker 2 -lz -framework CoreGraphics -framework MobileCoreServices -framework 系统配置-framework CFNetwork-framework UIKit-framework 基础-o /Users/imac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Products/Debug-iphonesimulator/wizcode.app/wizcode

ld:重复符号 _OBJC_IVAR_$_Reachability.reachabilityRef 中 /Users/imac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Intermediates/wizcode.build/Debug-iphonesimulator/wizcode.build/Objects-normal/i386/Reachability-183E2D17A6B26176.o 和 /Users/imac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Intermediates/wizcode.build/Debug-iphonesimulator/wizcode.build/Objects-normal/i386/Reachability-183E2D17A6B26176.o 对于体系结构 i386 Collect2:ld 返回 1 退出状态命令 /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 失败,退出代码 1 ld:重复符号 _OBJC_IVAR_$_Reachability.reachabilityRef 中 /Users/imac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Intermediates/wizcode.build/Debug-iphonesimulator/wizcode.build/Objects-normal/i386/Reachability-183E2D17A6B26176.o 和 /Users/imac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Intermediates/wizcode.build/Debug-iphonesimulator/wizcode.build/Objects-normal/i386/Reachability-183E2D17A6B26176.o 对于架构 i386

命令 /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 失败,退出代码为 1

Got this error for the first time, I have looked around and cannot find a solution to help me, I have cleaned my build and also checked to make sure I am compiling for the latest firmware.

This happened after I tired implementing a reachability solution I found over here
I imported the two reachability files (.m/.h) then added this code into the .m file and delared t in the . h of the reachability files

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

After that I called the function from both of my viwcontrollers viewwillappear methods like so..

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

No errors were produced untill I tried to build and run in the simulator. This is the error I received :(

Ld
/Users/imac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Products/Debug-iphonesimulator/wizcode.app/wizcode
normal i386
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/Users/imac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Products/Debug-iphonesimulator
-F/Users/imac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Products/Debug-iphonesimulator
-filelist
/Users/imac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Intermediates/wizcode.build/Debug-iphonesimulator/wizcode.build/Objects-normal/i386/wizcode.LinkFileList
-mmacosx-version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -lz
-framework CoreGraphics -framework MobileCoreServices -framework
SystemConfiguration -framework CFNetwork -framework UIKit -framework
Foundation -o
/Users/imac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Products/Debug-iphonesimulator/wizcode.app/wizcode

ld: duplicate symbol _OBJC_IVAR_$_Reachability.reachabilityRef in
/Users/imac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Intermediates/wizcode.build/Debug-iphonesimulator/wizcode.build/Objects-normal/i386/Reachability-183E2D17A6B26176.o
and
/Users/imac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Intermediates/wizcode.build/Debug-iphonesimulator/wizcode.build/Objects-normal/i386/Reachability-183E2D17A6B26176.o
for architecture i386 collect2: ld returned 1 exit status Command
/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2
failed with exit code 1 ld: duplicate symbol
_OBJC_IVAR_$_Reachability.reachabilityRef in
/Users/imac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Intermediates/wizcode.build/Debug-iphonesimulator/wizcode.build/Objects-normal/i386/Reachability-183E2D17A6B26176.o
and
/Users/imac/Library/Developer/Xcode/DerivedData/wizcode-ccyrqptvfsabmbahgxartbvxwurq/Build/Intermediates/wizcode.build/Debug-iphonesimulator/wizcode.build/Objects-normal/i386/Reachability-183E2D17A6B26176.o
for architecture i386

Command
/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2
failed with exit code 1

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

难如初 2024-12-02 11:17:26

这样,问题就解决了。

发生的事情是,当我将可达性文件导入到我的构建中时,发生了一些有趣的事情,不知何故,我删除了构建中已有的可达性文件,这些文件已被我用于传输数据的“所有看到我”的 ASIHTTPRequest 方法所使用。这把一切都搞乱了。

长话短说,我替换了文件,一切工作正常,我还发现 ASIHTTPTequest 正在为我处理可达性:) 这有多酷。

So, the problem has been resolved.

What happened was when I imported the reachability files over into my build something funny was happening and somehow I deleted the reachability files that were already in my build being used by the "all seeing I" ASIHTTPRequest methods I was using for transporting my data... which messed everything up.

So long story short I replaced the files and everything is working fine and I also found out that ASIHTTPTequest is taking care of the reachability for me :) how cool is that.

一曲爱恨情仇 2024-12-02 11:17:26

检查SystemConfiguration是否正确链接。不管怎样,清理你的代码:

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

然后在你需要的地方调用[Reachabilityreachable]。这也修复了您的内存泄漏。

Check if SystemConfiguration is linked properly. Anyway, clean up your code:

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

And then just call [Reachability reachable] wherever you need. This also fixes a memory leak you have.

甚是思念 2024-12-02 11:17:26

添加到此,它发生在我重新生成托管子类之后,它实际上并没有覆盖现有的子类,而只是创建了新的副本。我刚刚删除了两个并重新生成,一切都很好。

Just to add to this, it happened me after I regenerated managed subclasses and it didn't actually overwrite the existing ones but just made new duplicates. I just deleted both and regenerated and it was all good.

屋檐 2024-12-02 11:17:26

修改核心数据模型后,我删除了所有(自动生成的)NSManagedObjectModel 子类,然后再次创建它们。一旦它们全部创建完毕,我将它们拖到 XCode 中的 Group 文件夹中...并且旋转沙滩球的时间比平时更长。

下次我尝试运行时,它失败并出现“Mach-O-Linker”(Id)错误。在阅读其他回复后,我认为这可能与 NSMObj 类未达到预期有关。我删除了它们,退出,打开,生成它们,并将它们放在习惯的组文件夹中......还有 Viola!没有 Mach-O 错误。

我看到问题已解决,但我发布此内容只是为了将其索引到正确的问题下。就我而言,删除并重新生成(通过编辑器菜单)托管对象子类解决了该问题。

After modifying my core data model, I deleted all the (auto generated) NSManagedObjectModel subclasses, and created them again. Once they all were created, I dragged them to a Group folder in XCode... and got the spinning beachball for longer than usual.

The next time I tried to run, it failed with the "Mach-O-Linker" (Id) Error. After reading other responses, I figured it might have something to do with the NSMObj classes not being where expected. I deleted them, quit, opened, generated them, and put them in their customary group folder... and Viola! no Mach-O error.

I see that the problem is resolved, but I post this just to index it under the proper question. In my case, deleting and regenerating (via editor menu) the managed object subclasses fixed the issue.

一个人的夜不怕黑 2024-12-02 11:17:26

删除它然后再次添加。对我有用。 :D

Remove it then add it again. Works for me. :D

情绪少女 2024-12-02 11:17:26

当我在项目中添加第三方分析框架时,就会发生这种情况。当我检查框架信息时,它没有正确复制到磁盘上。我下载了新框架并将其复制到项目中,现在没有错误了。

This happens with me when i am adding third party analytics framework in my project. When i check with the info of framework its not properly copied on disk. i download new framework and copied it into project and now there is no error.

过去的过去 2024-12-02 11:17:26

我在我的一个 UIViewController 中有这段代码,并将其删除解决了这个错误。多么愚蠢且根本不明确的错误消息

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

I had this code in one of my UIViewController and removing it solved this bug. What a stupid and not-clear-at-all error message

NS_ENUM(NSInteger, Mode) {
    Assessments = 0,
    Onboarding
};
旧夏天 2024-12-02 11:17:26

确保您正在运行 YourApp.xcworkspace 而不是 .xcodeproj 文件。运行 .xcodeproj 文件时我确实遇到了同样的问题。运行 .xcworkspace 已经解决了问题并且错误已经消失。

Make sure you are running YourApp.xcworkspace instead of .xcodeproj file. I did face the same issue when did run .xcodeproj file. Running .xcworkspace has solved the problem and the error has gone away.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文