iOS 7: "isa" устарела
Когда я запускаю свое приложение в iOS7, я получаю предупреждение "isa" устарела ", я не знаю, как исправить это предупреждение. Пожалуйста, помогите.
array->isa = _JKArrayClass;
2 ответа
Включают <objc/runtime.h>
,
Заменить все как array->isa = _JKArrayClass;
с object_setClass(array, _JKArrayClass)
И все как class = array.isa
с class = object_getClass(array)
Я решил поделиться своим решением для вас, пользователей 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 Device build(с Xcode 5.1.0) странным образом опция CLANG_WARN_DIRECT_OBJC_ISA_USAGE = 'YES' не будет применена должным образом (рассматривается как ошибка). Если вам нужно собрать, включая arm64, просто используйте CLANG_WARN_DIRECT_OBJC_ISA_USAGE = 'NO'.