[cfe-dev] ARC and @synthesize of read only property
Jean-Daniel Dupas
devlists at shadowlab.org
Tue Jul 19 13:06:37 PDT 2011
Le 19 juil. 2011 à 21:50, David Chisnall a écrit :
> On 19 Jul 2011, at 19:46, Jean-Daniel Dupas wrote:
>
>> When I'm trying to synthesize a read only property in obj-c, I get the following error.
>>
>> error: ARC forbids synthesizing a property of an Objective-C object with unspecified storage attribute [4]
>>
>> I understand why it is necessary to specify storage attribute to generate a setter, but why is it relevant to generate a getter ?
>
> The getter semantics also change:
>
> - If the property is retained, then it will retain / autorelease the object, to ensure that it is not deallocated prematurely.
>
> - If the property is weak, then it must use the weak read barrier function
>
> - If the property is unsafe_unretained, then the getter will just return it directly.
>
Thank you for the explanation. So the retained/autorelease is a new behavior introduced with ARC. AFAIK, the getter did this only for atomic properties in non ARC mode.
> Even in ARC mode, the compiler can't magically guess what you mean.
While it cannot always guess, when the @synthezise directive specify an ivar, it can default to the ivar ownership, as this is the only acceptable value.
-- Jean-Daniel
More information about the cfe-dev
mailing list