Po aktualizacji do Xcode 7.3 zgłasza błąd Cannot create __weak reference in file using manual reference counting
w plikach pod. Czy ktoś rozwiązał ten problem?
objective-c
xcode
cocoapods
REALFREE
źródło
źródło
-Wall -Wextra -Wno-unused-parameter
flagi ostrzegawcze.To jest oficjalna odpowiedź od Apple z linku:
Zasadniczo, jeśli używasz Poda dla bibliotek innych firm, musisz albo usunąć __weak w innym miejscu niż ARC lub poczekać na aktualizację.
Aktualizacja @ 23.03
Powinienem był dowiedzieć się więcej o flagach, które mogę przekazać do osoby odpowiedzialnej, aby ominąć tego rodzaju rzeczy. Jednak zasadniczo nie należy
__weak
od teraz używać w trybie innym niż ARC, aby uniknąć nieoczekiwanych konfliktów. Dla użytkowników cocoapods nie musisz usuwać__weak
ani czekać na aktualizację, ale ustawWeak References in Manual Retain Release
flagę w ustawieniach kompilacji na TAK, jak powiedział Lean. Mam nadzieję, że to pomoże.źródło
Najlepszym sposobem rozwiązania tego problemu jest dodanie
post_install
skryptu do pliku Podfile, który ustawiaWeak References in Manual Retain Release
flagęyes
we wszystkich celach pod. Aby to zrobić, po prostu wklej następujący kod u dołu plikuPodfile
.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
Czasami takie postępowanie powoduje błąd
-fobjc-weak is not supported on the current deployment target
. Możesz rozwiązać ten problem, dodając kolejną opcję konfiguracji, zmuszając wszystkie pody do kierowania na żądaną wersję ( na podstawie tej odpowiedzi ):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
źródło
Obejście słabych odniesień Facebooka w FBSettings.m
Do Podfile można napisać skrypt do uruchomienia po instalacji / aktualizacji poda, opisuje tam co następuje.
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 jak znaleźć słowa tej magii. .
źródło
Znalazłem to.
Myślę, że oznaczało to usunięcie __weak
https://forums.developer.apple.com/thread/38934
źródło
Po prostu przejdź do swojego celu w zakładce "Fazy kompilacji", poszukaj plików pod w "Źródłach kompilacji", kliknij te pliki i dodaj flagę kompilatora "-fobjc-arc"
źródło
Lub zmień
__weak
na__unsafeunretained
. To rozwiąże problem w tradycji. Ponieważ MRC (przed xCode 4 -) __weak nie był w iOS.źródło