返回

OC项目创建iOS 14 Widget编译时遇到ld: Assertion failure,巧妙应对和轻松解决!

IOS

问题

在使用Xcode创建一个新的OC项目时,并添加了一个Widget Extension,然后直接运行编译项目,结果编译器报出错误:

ld: Assertion failure: !(@executablePath.contains("IntermediateHeaders")) @ /BuildRoot/Library/Caches/com.apple.xbs/Sources/iPhoneSimulator.platformSupport/iPhoneSimulator.build/Release/iphoneos/usr/lib/libobjc.A.dylib

解决方法

  1. 使用较低版本的Xcode

    此错误可能是由于Xcode版本过高导致的。可以尝试使用较低版本的Xcode来创建项目,看看是否可以解决问题。

  2. 清理项目

    在Xcode中,点击“Product”菜单,然后选择“Clean”选项,清理项目。然后重新编译项目,看看是否可以解决问题。

  3. 删除Derived Data文件夹

    在“Finder”中,找到项目所在的目录,然后找到“Derived Data”文件夹。将此文件夹删除,然后重新编译项目,看看是否可以解决问题。

  4. 更新Cocoapods

    如果项目中使用了Cocoapods,请确保Cocoapods是最新的。可以运行以下命令来更新Cocoapods:

    sudo gem install cocoapods
    

    然后重新编译项目,看看是否可以解决问题。

  5. 检查真机运行版本

    检查项目模拟器版本,确保真机系统版本与模拟器版本匹配。如果版本不匹配,模拟器可能无法正确编译和运行项目。

注意事项

  • 如果以上方法都无法解决问题,可以尝试在Xcode中打开“Build Settings”面板,然后在“Other Linker Flags”字段中添加以下标志:

    -ObjC
    
  • 如果项目中使用了静态库,请确保静态库的路径正确。

  • 如果项目中使用了第三方库,请确保第三方库与Xcode的版本兼容。

总结

以上是解决OC项目创建iOS 14 Widget时遇到ld: Assertion failure编译错误的几种方法。开发人员可以根据自己的情况尝试不同的方法,找到最适合自己的解决方法。

我希望这篇文章对您有所帮助。如果您有任何其他问题,请随时与我联系。