Обратите внимание, что в Objective C 2.0, новом "Modern Runtime" (доступно в приложениях iPhone и 64-битных приложениях Mac OS X 10.5), вам не нужно указывать ivars, вы можете указать свойства и затем использовать @synthesize для генерировать ивары.
Это потому, что в Modern Runtime у иваров есть глобальный символ косвенного обращения, который содержит смещение для ивара. Это также решает проблему хрупкого базового класса, позволяя переупорядочивать и добавлять ivars без необходимости перекомпиляции подклассов (удаление или переименование ivars может по-прежнему вызывать ошибки ссылок).
Однако вам все еще нужно перечислить свойства в главном интерфейсе, так что, похоже, нет никакого способа полностью скрыть приватные ивары, что является неудачным. Например, нельзя использовать свойство и @synthesize в категории.