Thursday, August 30, 2012  Cover up those ivars    There are
several Good reasons for this    How do you do this?    Here is
a class extension  @interface MyClass()    @interface MyClass :
NSObject @property(readonly, retain) NSString *currentPath;
@interface MyClass() @property(readwrite, retain) NSString
*currentPath;    @implementation MyClass {     NSString
*internalVar1;     NSNumber *internalVar2;  this is equivalent
of   @interface MyClass : NSObject {     NSString *internalVar1;
    NSNumber *internalVar2;    except now that this isn't in
your header file polluting it.   How do my Subclasses use these
vars?  Why Does this matter if its code just for me?  In
Conclusion  Follow Up      Rich said...  I totally agree with
you. Hide the implementation details. Of course, in Objective-C
nothing is ever really hidden--but the goal is to clearly
communicate the public API with other developers (including your
future self).  Actually, I try to avoid explicitly declaring
ivars at all. In modern Objective-C th