Я думаю, что может быть некоторая путаница, когда управление памятью опций пинков свойства в. Они влияют только на сеттер а не геттер. Вот краткий обзор с использованием ARC:
сильный - объект сохраняется при установке свойства. Предыдущее значение: освобождено. Это то, что вы хотите использовать с объектами наиболее времени, как вы обычно хотите иметь сохранить ваш Ивар, чтобы они не делали никаких прибудут высвобожден Underneath, это выглядит примерно так:
-(void)setObject:(id)obj
{
[obj retain];
[_object release];
_object = obj;
}
назначение - Всегда используется для значений, отличных от объекта, таких как C-скаляры или структуры. Поскольку это только значения, а не объекты, управление памятью не выполняется. Внизу, это выглядит примерно так:
-(void)setInteger:(NSInteger)newInt
{
_nteger = newInt;
}
копию - А новый объект того же типа создается и содержимое объекта, переданного в копируются. Это работает только для объектов, которые соответствуют протоколу NSCopying. Обычно вы используете это, когда хотите использовать исходные значения объекта, а затем редактировать исходный объект. (например, если у вас есть NSMutableString, установленный в «Jane», и с помощью этого свойства скопированного свойства свойство будет по-прежнему сообщать «Jane» даже после того, как вы измените исходный код NSMutableStringn на «John»). Под ним это выглядит примерно так:
-(void)setObject:(id)obj
{
id copy = [obj copy];
[_object release];
_object = copy;
}
слабый - Это очень похоже назначать, кроме случаев, когда назначенный объект dealloced, указатель возвращается к нулю. Обычно это используется в ситуациях, которые в противном случае приведут к сохранению циклов. Например, контроллер представления устанавливает себя как делегат представления, которому он владеет. Слабая используется для того, чтобы оба объекта сохраняли друг друга и, таким образом, никогда не выпускались.
Когда вы пишете object.property = value;
, [object setProperty: value]; фактически вызывается за кулисами.
I подозреваемый, который вы хотите использовать, как вы указали. Насколько я могу судить, никакие слабые свойства не вступают в игру в фрагментах кода, которые вы указали, если _leftPanelViewController.repotLabels
не является слабым.
Благодарим вас и за ваше последнее утверждение. Да, это было действительно слабое свойство, которое я понял и обозначил как Сильный, но тогда копия не имеет смысла – Gaurav18ca