Я новичок в Задаче C, и я обнаружил, что практика объявления иваров в заголовке очень странная. Это означает объявление внутреннего состояния объекта в его публичном заголовке, что не соответствует концепции инкапсуляции.
Например, скажем, у вас есть IPad. Apple не хочет, чтобы вы взламывали IPad, разглядывали и возились с элементами внутри. Если они хотят, чтобы вы что-то изменили, у iPad будет настройка, позволяющая вам это изменить.
Точно так же я не хочу, чтобы другие программисты видели ивары моих объектов. Это внутреннее состояние моего объекта. Если я хочу, чтобы вы изменили внутреннее состояние, я объявлю свойства для него.
Так что, как и в других языках, я бы скрывал свои ивары внутри файла реализации, а не объявлял их в заголовке.
Объявление ивара в заголовке кажется мне очень странным.
Эти ivars зависят от реализации и просто не должны быть частью заголовочного файла.