It's better not to expose publicly an instance variable unless you really need to.
The standard pattern for making some additional parts of the class accessible to subclasses is making a separate header file, e.g. BaseViewController+Private
with the declaration of readwrite
. This file can then be included by 'insiders', that is class and it's subclasses.