Как это отличается от того, если бы я, чтобы удалить скобки и все между ними?
@property
, само по себе, это просто метод декларации (или, в вашем случае два метода декларации, геттер и сеттер). Как правило, вы хотите, чтобы эти методы поддерживались фактической переменной экземпляра, которую получат и задают получатель и сеттер. Это то, что объявлено в фигурных скобках.
Удаление объявления переменных экземпляра в коде не изменяется очень много, однако, потому что компилятор будет использовать @property
декларацию autosynthesize переменных экземпляра для вас. Другими словами, вам, как правило, нужны переменные экземпляра, поддерживающие @property
, но вам не нужно объявлять их явно.
В вашем конкретном коде, однако, вы не указали достаточно информации, чтобы узнать, что происходит на самом деле. Многое зависит от того, что вы делаете (или не делаете) в соответствующем файле .m. Если вы скажете @synthesize
для этого @property
, то будут синтезированы эти переменные экземпляра, chartWidth
и chartHeight
. Но если вы не скажете @synthesize
, вы получите автосинтез переменных экземпляра _chartWidth
и _chartHeight
, и теперь, если вы также объявите chartWidth
и chartHeight
переменные экземпляра явно, у вас будет что-то беспорядочное на ваших руках.
Свойства могут быть доступны и из других классов. Остальные не могут получить доступ к другим классам –
, которые лучше всего объясняются здесь: https://www.bignerdranch.com/blog/should-i-use-a-property-or-an-instance-variable/ –
Это похоже на старый объект Objective- C. Компилятор не автосинтезирул переменные экземпляра, и они должны были быть объявлены в интерфейсе. – Willeke