【发布时间】:2012-07-15 02:17:51
【问题描述】:
一开始,我们构建了面向 5.0+ 的 iOS 应用,并使用 ARC 来简单地进行内存管理。后来为了向后兼容,我们决定支持 iOS 4.3。那我就
- 已安装 iOS 4.3 模拟器
- 将应用部署目标修改为 4.3
- 清理、构建、运行
但应用程序意外退出并显示以下输出
dyld:未找到符号:_objc_loadWeakRetained
引用自:/Users/xxx/Library/Application Support/iPhone Simulator/4.3.2/Applications/16E98912-33B5-4660-A9A3-879D92735E44/myApp.app/myApp
预计在:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation
我知道 4.3 不支持弱引用,但奇怪的是编译器在编译时从不抱怨,它只是在运行时崩溃。
更新:
我使用 unsafe_unretained 而不是弱关键字,应用程序仍然运行。但是我收到了很多警告,例如
__NSAutoreleaseNoPool(): __NSArrayM 类的对象 0x564bd90 自动释放,没有适当的池 - 只是泄漏“* '
正常吗?如何消除这些警告?
【问题讨论】:
-
检查你的 baseSDk 应该是 5.0。
-
我的 baseSDK 是 5.1,我应该把它改成 4.3 吗?我在列表中找不到 4.3 sdk
标签: ios memory-management automatic-ref-counting