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/archive%40mail-archive.com This email sent to arch...@mail-archive.com