Первая форма не использует свойства.Я не вижу веской причины не делать этого:
[myMemberVariable release];
myMemberVariable = [[MyClass alloc] init];
Поскольку старое значение определенно не совпадает с новым, поэтому нет никакой вероятности, что какое-либо старое значение будет выпущено, прежде чем оно может быть сохранено.снова.
Свойства имеют то преимущество, что в новых компиляторах они синтезируются компилятором и просто делают правильные вещи, то есть они знают, как сохранить новое и освободить старое значение, если тип равен единице.это должно быть сохранено или скопировано.Это не обязательно для таких типов, как int, float и т. Д., Так как это простые типы значений.
Другими словами, если вы используете точечную нотацию для себя или для другого объекта, вы получаете доступ к свойствуи фактически вызывают либо методы получения, либо установки, в зависимости от направления назначения.
Если вы обращаетесь к ivar (переменная-член) напрямую, у вас нет защиты от свойства, и вам придется самостоятельно сохранять / освобождать код.
Вы также можете написать свои собственные установщики и получатели, и тогда вам также придется позаботиться об управлении памятью, где это применимо.Это, однако, дает вам больше гибкости.Вы можете регистрировать элементы, проверять правильность ввода, обновлять внутренние переменные состояния и т. Д.