7

当我在 iOS7 中运行我的应用程序时收到警告“'isa' 已弃用”,我不知道如何修复此警告消息。请任何人帮助。

array->isa      = _JKArrayClass;
4

2 回答 2

17

包括<objc/runtime.h>.

将所有内容替换array->isa = _JKArrayClass;object_setClass(array, _JKArrayClass)

一切都class = array.isa喜欢class = object_getClass(array)

于 2013-11-09T11:06:05.360 回答
15

我想我会为你的 Cocoapods 用户分享我的解决方案。(如果您找到更好的解决方案,请在评论中告诉我)

我正在使用 Cocoapods,因此我不想修改要引入的库的源代码。问题是由 Cocoapods 将“直接使用 'isa'”值设置为“是(视为错误)引起的",从而导致所有自动构建失败。

我已通过将其添加到我的 Podfile 来解决问题:

post_install do |installer_representation|
    installer_representation.project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['CLANG_WARN_DIRECT_OBJC_ISA_USAGE'] = 'YES'
        end
    end
end

这样,“isa”的直接使用将显示为警告,但不会导致自动构建失败。

但是在 arm64 iOS 设备构建(使用 Xcode 5.1.0)中,奇怪的是 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = 'YES' 选项不会正确应用(视为错误)。如果您需要构建,包括 arm64,只需使用 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = 'NO' 选项即可。

于 2013-11-25T13:17:38.550 回答