iOS 7 : 'isa' is deprecated

血红的双手。 提交于 2019-12-04 11:53:40

问题


I get warning when I run my app in iOS7 "'isa' is deprecated", I don't have any idea how to fix this warning message. Please any one help on this.

array->isa      = _JKArrayClass;

回答1:


Include <objc/runtime.h>.

Replace everything like array->isa = _JKArrayClass; with object_setClass(array, _JKArrayClass)

And everything like class = array.isa with class = object_getClass(array)




回答2:


I figured I would share my solution for you Cocoapods users out there. (Please let me know in the comments if you have found a better solution)

I am using Cocoapods and for this reason I do not want to modify the source code of the libraries I am pulling in. The problem is caused by Cocoapods setting the "Direct usage of 'isa'" value to "Yes (treat as error)", thus causing all automated builds to fail.

I have fixed the problem by adding this to my 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

This way the direct usage of 'isa' will show up as warning but will not cause automated builds to fail.

But in arm64 iOS Device build(with Xcode 5.1.0) strangely CLANG_WARN_DIRECT_OBJC_ISA_USAGE = 'YES' option will not properly applied(treat as error). If you need to build, including arm64 just CLANG_WARN_DIRECT_OBJC_ISA_USAGE = 'NO' option can be used.



来源:https://stackoverflow.com/questions/19875166/ios-7-isa-is-deprecated

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!