Частные переменные экземпляра используются для отделения интерфейса от реализации. В Objective-C, поскольку объявление класса должно показывать все переменные экземпляра, должен быть способ предотвратить доступ подклассов к тем, которые являются частью внутренней реализации. В противном случае другие программисты могли бы написать код, который зависит от этих внутренних переменных, что сделало бы невозможным для дизайнера классов вносить изменения во внутренние компоненты класса, не нарушая существующий код.
С другой стороны, переменные экземпляра, которые не помечены как частные, являются частью контракта с программистом подкласса, тогда как переменные, помеченные как частные, не являются.
Это означает, что переменные экземпляра обычно должны быть помечены как закрытые, чтобы к ним можно было получить доступ только через их методы доступа, если они вообще есть. В противном случае кто-то может легко написать подкласс вашего класса и просто создать метод доступа, делающий любую переменную экземпляра общедоступной.