Quali linee guida suggerisci per l'utilizzo delle proprietà Objective-C?

0

Objective-C 2.0 ha introdotto proprietà. Mentre personalmente penso che le proprietà siano una bella aggiunta alla lingua, ho visto una tendenza a rendere ogni variabile di istanza come una proprietà. I codici di esempio Apple non fanno eccezione. Credo che questo sia contro lo spirito di OOP, e dal momento che espone molti più dettagli di implementazione di una classe per il cliente di quanto debbano sapere.

Quali linee guida suggerisci per le proprietà di utilizzo corrette nell'obiettivo C?

    
posta ab79 13.01.2011 - 10:30
fonte

3 risposte

5

Rendo tutte le proprietà delle mie variabili di istanza. Questo motivo principale è che rende la gestione della memoria molto più semplice e coerente. Rendendoli pubblici andrebbe contro il buon OO, quindi li rendo sempre privati usando una categoria come questa:

// File: ProjectManager.m:
@interface ProjectManager ()

@property (nonatomic, copy) NSString *slotID;
@property (nonatomic, retain) SubmitHandler *submitHandler;

@end

@implementation ProjectManager

@synthesize slotID, submitHandler;

- (void)dealloc
{
    self.slotID = nil;
    self.submitHandler = nil;
}
    
risposta data 22.05.2011 - 19:13
fonte
2

Secondo questa pagina : la funzione" proprietà dichiarate "Objective-C" fornisce un modo semplice per dichiarare e implementare i metodi di accesso di un oggetto. "

Quindi le proprietà sono un modo per dichiarare e / o implementare getter / setter.

Pensi che i getter / setter siano "contro lo spirito di OOP"? Se sì: andare per strutture di dati immutabili, se no: non vedo un problema con le proprietà.

    
risposta data 13.01.2011 - 12:24
fonte
1

Sto suggerendo:

  1. dichiara solo le proprietà che è veramente necessario raggiungere dall'ambito dell'oggetto dichiarato. Altrimenti, lascialo solo come variabile di istanza.
  2. Dichiara le proprietà di sola lettura se hai solo bisogno di leggere la proprietà e non di impostarla.
  3. Più di un suggerimento, ma assicurati di non dichiarare la proprietà retain ed per il delegato dell'oggetto personalizzato.
risposta data 13.01.2011 - 12:32
fonte

Leggi altre domande sui tag