Второй абзац, который вы отправили, является истинным. Переменная экземпляра будет автоматически синтезироваться, только если компилятор отвечает, по крайней мере, на методы getter/setter. Если вы решите переопределить оба метода и все еще хотите е, чтобы быть переменной экземпляра, который идет с собственностью, созданной, вам нужно вручную синтезировать, например:
@synthesize variableName;
Обратите внимание, что если вы используете пункт @synthesize как есть (без «=»), переменная экземпляра, которая будет создана, будет иметь то же имя (в данном случае variableName
). Если вы хотите, чтобы дать переменную экземпляра имя, отличное от недвижимости, которую создали, вы можете добавить любое имя, которое вы хотите, как это:
@synthesize variableName = someOtherName;
В этом случае имя свойства будет variableName
и имя переменной экземпляра будет someOtherName
. Соглашение состоит в том, чтобы назвать переменную экземпляра тем же именем, что и свойство, только с подчеркиванием в начале (в данном случае _variableName
). Это также будет имя переменной, если вы разрешите компилятору создавать переменную для вас, но нести ответственность за хотя бы один из методов getter/setter.
Это зависит от вашей реализации. Если вам действительно нужна переменная экземпляра, вы можете ее создать. Но свойство может быть получено из других переменных и вычисляется только тогда, когда его просят - в этом случае его не нужно хранить где-либо. – michaelrccurtis