L'incapsulamento dei dati in Objective-C significa che solo la classe stessa deve toccare le sue variabili di istanza. Perciò si dovrebbe sempre contrassegnarli come privati, e solo esporre loro attraverso le proprietà, come questo:
@interface Foo : NSObject {
@private
int numberOfBars;
Baz* contentBaz;
}
@property(nonatamic, assign) int numberOfBars;
@property(nonatomic, retain) Baz* contentBaz;
@end
Ciò significa che la classe può implementare la convalida nella sua metodi setter. E ancora meglio se usi @synthesize
per generare getter e setter di quanto non ti debba preoccupare del modello di memoria di Cocoa (ad eccezione del rilascio dei tuoi ivars in dealloc).
Perché i voti ravvicinati? – CesarGon
FWIW: L'incapsulamento dei dati non è in alcun modo specifico per l'Objective C, e nemmeno per la programmazione orientata agli oggetti, piuttosto è una tecnica molto generale utile per controllare una classe di complessità in quasi tutti gli ambienti di programmazione. – dmckee
Concordo sul fatto che questo (incapsulamento) sia "spiegato" in modo insufficiente. Per qualche ragione, quasi TUTTO nell'obiettivo C è "così" .. Tutti i concetti hanno simpatici, astratti, semi-correlati, "nomi" inglesi ... che purtroppo non hanno assolutamente senso insieme ... FINO A che non capisci ... Poi, un interruttore ribalta, e tutti quelli che non capiscono sembrano stupidi. Giuro che il modo in cui hanno astratto i concetti è proprio al limite di ciò che _normal_ persone possono comprendere .. al punto che una volta ottenuto lo capisci ...hai quasi paura di tornare indietro e cercare di spiegarlo, lol. –