I just updated a project to make use of ARC with the Xcode 4.2 built-in conversion tool. Unfortunately there is a weird bug appearing that I don’t understand and didn’t find anything about. I have a document class with a property declaration:
@property (weak) IBOutlet WebView *webView;
In the implementation file I have a @synthesize statement:
@synthesize webView=_webView;
When I try to compile it, it fails and tells me:
error: @synthesize of ‘weak’ property is only allowed in ARC or GC
mode
Of course the project is tagged to compile with ARC. I would highly appreciate any help to understand what I’m doing wrong and why.
Edit: Was late yesterday. So here is a more complete compile-log:
[…] -fobjc-arc -Wno-trigraphs -fpascal-strings -O0 -Wmissing-prototypes -Wreturn-type -Wparentheses -Wswitch -Wno-unused-parameter -Wunused-variable -Wunused-value -Wshorten-64-to-32 -DDEBUG=1 -isysroot /Developer/SDKs/MacOSX10.7.sdk -fasm-blocks -mmacosx-version-min=10.7 -gdwarf-2 -Wno-sign-conversion “-DIBOutlet=attribute((iboutlet))” “-DIBOutletCollection(ClassName)=attribute((iboutletcollection(ClassName)))” “-DIBAction=void)attribute((ibaction)” -iquote […]/Build/Intermediates/[…].build/Debug/[…].build/[…]-generated-files.hmap -I[…]/Build/Intermediates/[…].build/Debug/[…].build/[…]-own-target-headers.hmap -I[…]/Build/Intermediates/[…].build/Debug/[…].build/[…]-all-target-headers.hmap -iquote […]/Build/Intermediates/[…].build/Debug/[…].build/[…]-project-headers.hmap -I[…]/Build/Products/Debug/include -I[…]/Build/Intermediates/[…].build/Debug/[…].build/DerivedSources/x86_64 -I[…]/Build/Intermediates/[…].build/Debug/[…].build/DerivedSources -F[…]/Build/Products/Debug -fno-objc-arc […]
It seems the compiler-settings for ARC are turned on in the beginning and turned off again later in the arguments list. To be honest: I don’t know where to remove such weird settings and how it came to this. The only solution I would come up with now, would be to start the complete project over from a blank and new one and import all the class files from scratch.
If someone knows an easier way, I would appreciate very much.
PS: I do have all build-settings concerning the ARC set to YES.
I took some more time today and did a new conversion from a previous commit of the project. This time everything went well. I presume this error emerged out of me trying to do the conversion in 2 separate steps. The project is split into 2 components. I wanted to convert them separately. Thats why I didn’t select all the files during the first conversion run. To my amazement the first conversion ran very painlessly and in shorter time than I expected. So I decided to convert the second component of the project too. What I ended up with, was the project state described as the problem above: conflictive build-settings.
A good advice might be not to try to convert a project in steps, but take a couple of more time and do it at once. I must assume: the conversion-function of Xcode might not be meant for such a procedure.