A mio avviso, l’impostazione di un ivar ora mantiene l’object che gli è stato assegnato, poiché l’impostazione delle variabili è predefinita per il qualificatore strong
. Poiché ivars si trova nell’ambito dell’object in cui sono dichiarati e strong
conserva oggetti nell’ambito della variabile, ciò significa che il valore di ivars non verrebbe mai rilasciato mentre l’object che contiene l’ivar è ancora vivo.
È corretto?
Se è così, ho ragione nel pensare che, in termini di gestione della memoria, non c’è più differenza tra una proprietà di conservazione (forte) e un semplice ivar?
Se una variabile:
Quindi è opportuno dichiararlo come ivar senza una corrispondente @property
/ @synthesize
e riferirlo direttamente all’interno dell’implementazione. È in linea con Encapsulation per dichiarare questo ivar nel file di implementazione della class.
// MyClass.h @interface MyClass : ParentClass @end // MyClass.m @implementation MyClass { NSString *myString; } - (void)myMethod { myString = @"I'm setting my ivar directly"; } @end
__strong
dal compilatore ARC. nil
se è un object o 0
se è un primitivo. Non è ansible utilizzare KVO e fare getter e setter personalizzati con variabili di istanza diverse da quelle che sono molto simili quando si utilizza ARC.