libobjc.A.dylib在iOS 4.3上编译错误

我在iOS模拟器4.3中有一个编译错误,我实际上无法弄清楚,我得到的错误是:

dyld: lazy symbol binding failed: Symbol not found: _objc_retain Referenced from: /Users/ben/Library/Application Support/iPhone Simulator/4.3.2/Applications/75915A97-7C3D-489A-B7B0-7B6895A4B584/AppName.app/AppName Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/usr/lib/libobjc.A.dylib dyld: Symbol not found: _objc_retain Referenced from: /Users/ben/Library/Application Support/iPhone Simulator/4.3.2/Applications/75915A97-7C3D-489A-B7B0-7B6895A4B584/AppName.app/AppName Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/usr/lib/libobjc.A.dylib 

注意:
被引用的库(libobjc.A.dylib)实际上是在“预期的地方”在iOS5设备和iOS5模拟器中,代码工作正常。

在Build Settings中添加-fobjc-arc =>其他链接器标志( OTHER_LDFLAGS )用于不同的configuration

如果您使用使用ARC的库并希望生成/运行在较旧的iOS 4设备上,则会出现此问题。

在生成设置=>其他链接器标志

  • 添加-fobjc-arc
  • 如果尚未解决,请添加-weak_library /usr/lib/libobjc.A.dylib