After you call the super init method and it returns, part of the superclass of your object is initialized and ready for use. This is normal and you are expected to use your property accessors after that. For instance. If you create a subclass of UIViewController , then you will normally be given your (inherited) title property or change your navigationItem in the init method.
However, you may violate this behavior. If you override one of your superclass methods (including one of its access methods) and then you call this method in the init method, you need to make sure that your overridden method will behave correctly before your object is fully initialized.
More subtly, you may have redefined the superclass method, and then you will call another method of the superclass that you have not redefined. Well, what if the method you invoke wraps around and invokes the method that you redefined? You should also be aware of this feature.
All that has been said, I repeat that it is perfectly normal to use your superclass property accessors to configure it after you initialize it by calling one of its init methods.
source share