IOS Variabile vs Proprietà

4

Ho appena iniziato ad immergermi nello sviluppo di Objective-C e IOS e mi chiedevo quando e la posizione corretta dovrei dichiarare variabili / proprietà. La parte principale del codice che ho bisogno di spiegare è la seguente:

Perché e quando dovrei dichiarare le variabili all'interno dell'istruzione dell'interfaccia e perché hanno la stessa variabile con _ e quindi la stessa come una proprietà. E poi nell'implementazione fanno @synthesize tableView = _tableView (capisco cosa fa synth)

Grazie :-)

@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> 
{
    UITableView *_tableView;
    UIActivityIndicatorView *_activityIndicatorView;
    NSArray *_movies;
}

@property (nonatomic, retain) UITableView *tableView;
@property (nonatomic, retain) UIActivityIndicatorView *activityIndicatorView;
@property (nonatomic, retain) NSArray *movies;
    
posta William Smith 05.07.2012 - 06:43
fonte

2 risposte

5

Prima di tutto, non è necessario dichiarare le variabili di istanza per le proprietà come l'istruzione

@synthesize var = _iVar;

sta effettivamente generando una variabile implicita chiamata _iVar per te.

Creerai le proprietà quando vuoi che siano accessibili al di fuori della classe come

YourClass *obj = [[YourClass alloc] init];
obj.yourProperty = somevalue;

Le proprietà ti sollevano anche dallo scrivere i tuoi getter e ampli; setter e si occupano di gran parte della gestione della memoria. Ecco qualcosa che potresti voler leggere più altri articoli collegati all'interno del post.

link

    
risposta data 05.07.2012 - 20:56
fonte
2

Why and when should i be declaring variables inside the interface statement

Le variabili di istanza sono facoltativamente definite all'interno dell'istruzione dell'interfaccia. In alternativa puoi definirli nell'implementazione (o, per le proprietà sintetizzate, per niente).

why do they have the same variable with _

Avere un carattere di sottolineatura è solo una convenzione per le variabili "private". La convention è seguito anche in altre lingue. Questi non sono obbligatori.

and then the same one as a property. And then in the implementation they do @synthesize tableView = _tableView (I understand what synthesize does)

Le proprietà sono un mezzo per fornire agli oggetti esterni l'accesso alle variabili di questa classe. Se intendi utilizzare una variabile all'interno della classe e non vuoi dire / devi esporla a classi esterne, allora non è necessario definirne una proprietà.

Se il nome della variabile e il nome della proprietà erano gli stessi, devi solo scrivere @synthesize variableName . Tuttavia, se sono diversi ad esempio, quando _ viene aggiunto al nome per convenzione, l'istruzione @synthesize variableName = _variableName indica che la proprietà variableName imposta e ottiene la variabile _variableName.

    
risposta data 05.07.2012 - 07:16
fonte

Leggi altre domande sui tag