Après la mise à jour vers Xcode 7.3, l'erreur Cannot create __weak reference in file using manual reference counting
dans les fichiers pod. Quelqu'un a-t-il résolu ce problème?
objective-c
xcode
cocoapods
REALFREE
la source
la source
-Wall -Wextra -Wno-unused-parameter
indicateurs d'avertissement activés.Voici la réponse officielle d'Apple à partir du lien:
Donc, fondamentalement, si vous utilisez Pod pour des bibliothèques tierces, vous devez soit supprimer __weak dans non-ARC, soit attendre la mise à jour.
Mettre à jour le 23/03
J'aurais dû faire plus de recherches sur les drapeaux que je peux transmettre à complier afin de contourner ce genre de choses. Mais fondamentalement, vous ne devriez pas utiliser
__weak
en mode non-ARC à partir de maintenant pour éviter tout conflit inattendu. Pour les utilisateurs de cocoapods, vous n'avez pas besoin de supprimer__weak
ou d'attendre la mise à jour, mais définissez l'Weak References in Manual Retain Release
indicateur dans les paramètres de construction sur OUI, comme l'a dit Lean. J'espère que cette aide.la source
La meilleure façon de résoudre ce problème est d'ajouter un
post_install
script à votre fichier Podfile qui définit l'Weak References in Manual Retain Release
indicateur suryes
toutes vos cibles de pod. Pour ce faire, collez simplement le code suivant au bas de votre fichierPodfile
.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
Parfois, cela entraîne une erreur
-fobjc-weak is not supported on the current deployment target
. Vous pouvez résoudre ce problème en ajoutant une autre option de configuration, forçant tous les pods à cibler la version souhaitée (en fonction de cette réponse ):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
la source
Solution de contournement pour les références faibles de Facebook dans FBSettings.m
Pour Podfile, il est possible d'écrire un script à exécuter après l'installation / la mise à jour du pod, décrit ce qui suit.
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 comment trouver les mots de la magie ça. .
la source
J'ai trouvé ça.
Je suppose que cela signifie supprimer __weak
https://forums.developer.apple.com/thread/38934
la source
Accédez simplement à votre cible dans l'onglet "Build Phases", recherchez les fichiers pod dans "Compile Sources", cliquez sur ces fichiers et ajoutez le drapeau du compilateur "-fobjc-arc"
la source
Ou changez
__weak
en__unsafeunretained
. Cela résoudra le problème de la tradition. Depuis MRC (avant xCode 4 -) __weak n'était pas dans iOS.la source