Разница между использованием ивара и объявлением переменной внутри реализации заключается в том, что переменная в реализации находится в области видимости файла и является глобальной. Это означает, что все экземпляры (и любые статические методы) будут использовать одну и ту же переменную; то есть, если один экземпляр вашего объекта изменит переменную, он изменит его для всех экземпляров.
Вариант использования для определения его в области видимости файла - хранить вещи для статических методов (методов, которые действуют непосредственно на класс, а не на экземпляр класса). Действительно распространенным вариантом использования этого является шаблон проектирования Singleton. Вы можете определить статический экземпляр вашего класса в этом файле, чтобы в любой момент вы могли получить доступ к одному и тому же экземпляру. Вы можете предоставить статический метод, который возвращает этот экземпляр, чтобы любой объект в вашем коде мог получить доступ к этому же объекту, вызвав метод непосредственно в вашем классе.
Обновление 4/17/14
Обычной практикой является использование Свойства . Это создает методы получения и установки для вас автоматически, делая класс более расширяемым (если вы решите изменить способ работы свойства, возможно, вы захотите изменить его так, чтобы он всегда вычислялся на лету, открытый интерфейс класса изменять не нужно) ).
Вы можете использовать расширения частного класса для объявления "приватных" свойств и методов . Это обеспечивает защиту определенных свойств и методов от доступа внешних классов.