After updating to Xcode 7.3, it throws the error Cannot create __weak reference in file using manual reference counting
in pod files. Has anyone solved this issue?
Set Build Settings -> Apple LLVM 7.1 - Language - Objective C -> Weak References in Manual Retain Release
to YES
.
Taken from Apple Developers Forums - Xcode 7.3b4, non-arc, cannot create __weak reference.
This is official answer from Apple from the link:
This issue behaves as intended based on the following: We are in the process of implementing weak references in all Objective-C language modes. Since “__weak” has historically been ignored in non-ARC (and non-GC) language modes, we’ve added this error to point out places where the semantics will change in the future. Please update your bug report to let us know if this is still an issue for you.
So basically, if you are using Pod for 3rd party libraries, you have to either delete __weak in non-ARC or wait for update.
Update @ 3/23
I should've research more about flags that I can pass to complier in order to bypass these kinda stuffs. But fundamentally you should not use __weak
in non-ARC mode from now to avoid any unexpected conflicts. For cocoapods users, you do not need to delete __weak
or wait for update but set Weak References in Manual Retain Release
flag in build settings to YES like Lean said. Hope this help.
The best way to solve this is to add a post_install
script to your Podfile that sets the Weak References in Manual Retain Release
flag to yes
in all your pod targets. To do that just paste the following code at the bottom of your 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
Sometimes, doing that result in the error -fobjc-weak is not supported on the current deployment target
. You can solve that by adding another configuration option, forcing all the pods to target the version you want (based on this answer):
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With