После обновления до Xcode 7.3 он выдает ошибку Cannot create __weak reference in file using manual reference counting
в файлах pod. Кто-нибудь решил эту проблему?
objective-c
xcode
cocoapods
REALFREE
источник
источник
-Wall -Wextra -Wno-unused-parameter
предупреждающие флаги.Это официальный ответ Apple по ссылке:
Таким образом, если вы используете Pod для сторонних библиотек, вам нужно либо удалить __weak в не-ARC, либо дождаться обновления.
Обновление @ 3/23
Мне нужно было больше узнать о флагах, которые я могу передать компилятору, чтобы обойти подобные вещи. Но принципиально с этого момента вы не должны использовать
__weak
режим без ARC, чтобы избежать любых неожиданных конфликтов. Для пользователей cocoapods вам не нужно удалять__weak
или ждать обновления, но установитеWeak References in Manual Retain Release
флаг в настройках сборки на YES, как сказал Лин. Надеюсь на эту помощь.источник
Лучший способ решить эту проблему - добавить
post_install
в ваш подфайл скрипт, который устанавливаетWeak References in Manual Retain Release
флаг дляyes
всех целей вашего пода. Для этого просто вставьте следующий код внизу файлаPodfile
.post_install do |installer_representation| installer_representation.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['CLANG_ENABLE_OBJC_WEAK'] ||= 'YES' end end end
Иногда это приводит к ошибке
-fobjc-weak is not supported on the current deployment target
. Вы можете решить эту проблему, добавив еще один параметр конфигурации, заставив все модули нацеливаться на нужную вам версию ( на основе этого ответа ):post_install do |installer_representation| installer_representation.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['CLANG_ENABLE_OBJC_WEAK'] ||= 'YES' config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.3' end end end
источник
Обход слабых ссылок Facebook в FBSettings.m
В Podfile можно написать сценарий для запуска после установки / обновления модуля, там описывается следующее.
post_install do | installer | classy_pods_target = installer.pods_project.targets.find {| target | target.name == 'Facebook-iOS-SDK'} classy_pods_target.build_configurations.each do | config | config.build_settings['CLANG_ENABLE_OBJC_WEAK'] ||= 'YES' end end
CLANG_ENABLE_OBJC_WEAK как найти слова волшебства, что. .
источник
Я нашел это.
Я думаю, это означало удалить __weak
https://forums.developer.apple.com/thread/38934
источник
Просто перейдите к своей цели на вкладке «Build Phases», найдите файлы pod в «Compile Sources», щелкните эти файлы и добавьте флаг компилятора «-fobjc-arc»
источник
Или измените
__weak
на__unsafeunretained
. Это решит проблему по традиции. Поскольку MRC (до xCode 4 -) __weak не было в iOS.источник