What about the @property declarations in the new scheme ?


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/archive%40mail-archive.com

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

Reply via email to