2011-12-22 9 views

risposta

6

L'ivar (il primo) è una variabile semplice a cui non è possibile accedere al di fuori dello scopo di un'implementazione dell'interfaccia in cui è stato creato (se si usa la direttiva @private) e non ha metodi di accesso sintetizzati.

La proprietà (secondo) è un Ivar avvolto e qualcosa che può sempre accedere tramite un'istanza di una classe e ha i metodi di accesso sintetizzati (se si utilizza @synthesize direttiva)

MyClass *class = [[MyClass alloc] init]; 
[class setMyString:@"someString"]; //generated setter 
NSString *classString = [class myString]; //generated getter 
+0

Nel secondo caso ho non pensare che il getter/setter sintetizzato di myString sia accessibile al di fuori dello scope di implementazione. Si noti che si trovano in un'estensione di classe all'interno del file di implementazione. – SundayMonday

+0

Mi dispiace, ho perso quella parte. Quest'ultimo è considerato in una sezione privata (lo stesso delle API private di Apple come -recirsiveDescription di UIView). Ma è ancora possibile accedervi tramite i metodi accessor, sebbene il compilatore genererà avvisi. Il primo non sarà accessibile in quanto il compilatore genererà errori. – Eugene

Problemi correlati