2012-10-16 8 views
11

In un file .h, qual è la differenza tra:ios interfaccia iVar vs Proprietà

@interface ViewController : UIViewController 
@property (strong, nonatomic) UIView* myView; 

E

@interface ViewController : UIViewController{ 
    UIView* myView; 
} 
+0

non utilizzare forte per ** myView ** creerà un ciclo di conservazione andare per [riferimento qui] (https://stackoverflow.com/a/11013715/3030400) –

risposta

5

La differenza principale è che @property è visibile ad altri oggetti e che è possibile accedervi utilizzando un'istanza della classe.

È possibile utilizzare @synthesize nel file di implementazione per automatizzare le funzioni di definizione de getter setter nella propria implementazione.

Aggiornato (segue @suggerimento Graham Lee s')

Secondo l'identificatore di visibilità per l'istanza variabili (@protected/@private/@public), l'ivar può essere utilizzato nella vostra implementazione file, sottoclassi o altre classi. Il valore implicito è @ protetto, quindi nel tuo esempio sarà visibile al tuo file di implementazione e sottoclassi.

+3

senza alcun modificatore di visibilità, come quello in questa domanda, sono implicitamente '@ protected'. Lungi dal non essere accessibili da altri oggetti, possono essere utilizzati in qualsiasi sottoclasse della classe in cui sono dichiarati. –

14

La prima è la dichiarazione di una proprietà, mentre il secondo è solo un ivar. Una proprietà è la dichiarazione automatica di un getter e un setter per un ivar, ma se non c'è ivar (come nel tuo primo esempio) la proprietà creerà anche l'ivar.

+0

Breve e preciso .. !! perfezionare..!! Le variabili di istanza – Shradha