Here is something I have scratched off my head and could not make it clear.
In Objective-C there is no concept of "Protected" when defines the property in the super class. (Some people may argue that they could achieve similar behaviour by using #ifdef, but this is not something I am considering here.) So that means a property is either public or private.
For all the subclasses, if it want to accessing one of the private property defined by its superclass. The property has to be defined for public in the super class,which doesn't make much sense to me, since the thumb rule of OOP is always try to keep as much as privacy as possible.
For example,
If a class called Vehicle has a private property "Wheel *wheel
" and public method "-(void) run;
".
Why could not its subclass easily access the "Wheel *wheel" without let Vehicle reveal such property in the public declaration since all the outsiders need to know is only "it can run"