Преимущество объявления ivars в секции @implementation
заключается в лучшей инкапсуляции.Таким образом, ивары не должны появляться в файле .h
и поэтому не видны внешним пользователям вашего класса, которые видят только заголовочный файл.Это лучше скрывает внутреннюю реализацию класса.
Вообще говоря, теперь, когда свойства могут иметь автоматически синтезированные ивары, а другие ивы могут быть объявлены непосредственно в блоке @implementation
, я не вижу причин, почему вы должны объявлятьивара вообще в вашем @interface
(кроме обратной совместимости).
Зачем объявлять эту строку NSSt в области видимости?
Потому что это единственный способ объявитьпеременная экземпляра.В противном случае вы объявите переменную, к которой можно получить доступ из любого места в том же файле (см. Вопрос BoltClock, связанный с ним в его комментарии).