My question was unclear. I was asking about _where_ they should be declared. I 
guess they remain in the @interface.


Le 3 juin 2015 à 18:11, Mark+Vron <mark.v...@virgin.net> a écrit :

>> On 03 Jun 2015, at 16:27, Bernard Desgraupes <bdesgrau...@orange.fr> wrote:
>> 
>> 
>> What about the @property declarations in the new scheme ?
>> 
> 
> I’m not sure what you’re asking, @properties are a big part of the 'new way'… 
> 
> This is not about properties though, just about the notion of moving ivars 
> out of the class @interface and (if still needed) into the @implementation or 
> class extension.  There’s a clang warning that can be enabled to help you if 
> desired: -Wobjc-interface-ivars
> 
> 
> 
>> 
>> Le 3 juin 2015 à 17:15, Mark Wright <blue.bucon...@virgin.net> a écrit :
>> 
>>> Sorry, yes, I misread the initial paragraph that mentions the 
>>> @implementation block.  I actually meant implementation *file* since that’s 
>>> typically where the class extension @interface is declared (it extends the 
>>> class internally).
>>> 
>>> However, as you’ve surmised, all this talk of clang warnings regarding this 
>>> is directly related to the primary *class interface* which is typically 
>>> declared in the header file.  This is the class interface:
>>> 
>>> @interface SubClass : ParentClass
>>> ….
>>> @end
>>> 
>>> The idea is to end the old ways of declaring ivars in the header and move 
>>> them into the implementation where they belong (they’re private to the 
>>> class).
>>> 
>>> 
>>> 
>>> 
>>>> On 03 Jun 2015, at 16:02, Alex Zavatone <z...@mac.com> wrote:
>>>> 
>>>> 
>>>> On Jun 3, 2015, at 10:41 AM, David Duncan wrote:
>>>> 
>>>>> There are 3 ways to add ivars to a class. The traditional way:
>>>>> 
>>>>> @interface Foo {
>>>>>   id _bar;
>>>>> }
>>>>> 
>>>>> And 2 new ways:
>>>>> 
>>>>> @interface Foo() { // Class extension, note the ()
>>>>>   id _baz;
>>>>> }
>>>> 
>>>> Ahhhhhhh.  Completely missed that.  Haven't seen it explained that clearly 
>>>> in a morning of surfing.
>>>> 
>>>> So, running a quick test using the clang pragma for 
>>>> -Wobjc-interface-ivars, in both the .h and .m files of a class this 
>>>> clarifies the Apple and Clang documentation quite a bit.
>>>> 
>>>> In the 3 cases you outlined for declaring iVars, Clang ONLY warns about 
>>>> declaring the ivars within the @interface parens of @interface which is 
>>>> generally within the header file.
>>>> 
>>>> Both other cases (the two new ways of class extension, @interface stuff() 
>>>> {} and @implementation stuff {} ) do not upset Clang at all.
>>>> 
>>>> So, generally, the rule comes down to "don't declare ivars within the 
>>>> @interface that is probably within your .h file but if you need to (you 
>>>> should use properties instead), you can within the class extension and 
>>>> @implementation."
>>>> 
>>>> Does this sound like a proper explanation?
>>>> 
>>>> Thanks much, David.
>>>> 
>>>> 
>>>>> @implementation Foo { // Implementation block.
>>>>>   id _faz;
>>>>> }
>>>>> 
>>>> 
>>>> 
>>>>>> On Jun 3, 2015, at 7:32 AM, Alex Zavatone <z...@mac.com> wrote:
>>>>>> 
>>>>>> Maybe I should have included the text above it.
>>>>>> 
>>>>>> "It's also possible to use a class extension to add custom instance 
>>>>>> variables. These are declared inside braces in the class extension 
>>>>>> interface."
>>>>>> 
>>>>>> So, I don't know how you see that it goes in the @implementation block 
>>>>>> since the code I pasted and the line above it say it goes in the 
>>>>>> @interface.
>>>>>> 
>>>>>> Page 73 of 
>>>>>> https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/ProgrammingWithObjectiveC.pdf
>>>>>> 
>>>>>> On Jun 3, 2015, at 10:22 AM, Mark Wright wrote:
>>>>>> 
>>>>>>> That’s a ‘Class Extension’.  Furthermore, it’s under the title "Class 
>>>>>>> Extensions Extend the Internal Implementation”.  It also mentions that 
>>>>>>> it goes in the @implementation block…
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>>> On 03 Jun 2015, at 15:11, Alex Zavatone <z...@mac.com> wrote:
>>>>>>>> 
>>>>>>>> Apple's Programming with Objective-C reference document © 2014
>>>>>>>> 
>>>>>>>> https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/ProgrammingWithObjectiveC.pdf
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Page 73
>>>>>>>> 
>>>>>>>> @interface XYZPerson () { 
>>>>>>>> id _someCustomInstanceVariable;
>>>>>>>> } 
>>>>>>>> ...
>>>>>>>> @end
>>>>>>>> 
>>>>>>>> Uhhhhhh.
>>>>>>>> 
>>>>>>>> Doesn't this violate Clang's own mention that "declaration of instance 
>>>>>>>> variables in the interface is deprecated" in Apple's own 
>>>>>>>> recommendations and documentation?
>>>>>>>> _______________________________________________
>>>>>>>> 
>>>>>>>> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
>>>>>>>> 
>>>>>>>> Please do not post admin requests or moderator comments to the list.
>>>>>>>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>>>>>>>> 
>>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>>> https://lists.apple.com/mailman/options/cocoa-dev/blue.buconero%40virgin.net
>>>>>>>> 
>>>>>>>> This email sent to blue.bucon...@virgin.net
>>>>>>> 
>>>>>> 
>>>>>> _______________________________________________
>>>>>> 
>>>>>> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
>>>>>> 
>>>>>> Please do not post admin requests or moderator comments to the list.
>>>>>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>>>>>> 
>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>> https://lists.apple.com/mailman/options/cocoa-dev/david.duncan%40apple.com
>>>>>> 
>>>>>> This email sent to david.dun...@apple.com
>>>>> 
>>>>> --
>>>>> David Duncan
>>>>> 
>>>> 
>>> 
>>> 
>>> _______________________________________________
>>> 
>>> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
>>> 
>>> Please do not post admin requests or moderator comments to the list.
>>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>>> 
>>> Help/Unsubscribe/Update your Subscription:
>>> https://lists.apple.com/mailman/options/cocoa-dev/bdesgraupes%40orange.fr
>>> 
>>> This email sent to bdesgrau...@orange.fr
>> 
>> 
>> _______________________________________________
>> 
>> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
>> 
>> Please do not post admin requests or moderator comments to the list.
>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>> 
>> Help/Unsubscribe/Update your Subscription:
>> https://lists.apple.com/mailman/options/cocoa-dev/blue.buconero%40virgin.net
>> 
>> This email sent to blue.bucon...@virgin.net
> 


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to