Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Le proprietà

Esporre alcune caratteristiche di un oggetto alla visualizzazione e alla modifica dall'esterno
Esporre alcune caratteristiche di un oggetto alla visualizzazione e alla modifica dall'esterno
Link copiato negli appunti

Le proprietà sono dei metodi che servono per esporre le variabili di istanza dell'oggetto che le dichiara al mondo esterno (incapsulamento). Possiamo avere proprietà di sola lettera, sola scrittura o lettura e scrittura.

Per convenzione i metodi delle proprietà hanno prefisso set e get seguito dal nome della variabile che intendono esporre. Il metodo con prefisso set serve per impostare il valore della variabile, quello con prefisso get serve per recuperare il valore della variabile.

In ObjectiveC 2.0 è stata introdotta una nuova sintassi per la dichiarazione delle proprietà che solleva il programmatore dalla scrittura dei metodi getter e setter nella maggior parte dei casi.

Questa sintassi si compone di due parti, una da inserire nel file di interfaccia l'altra da scrivere nel file di implementazione.

Sarà il compilatore poi a sostituire queste nostre dichiarazioni con i metodi getters e setters secondo le nostre indicazioni.

Interfaccia

Nel file di interfaccia le proprietà di PrimaClasse vanno dichiarata nel seguente modo:

@property (assign, readwrite) int intero;
@property (retain, readwrite) NSString* stringa;

Nella parte tra parentesi tonda andranno inserite le informazioni necessarie al compilatore per scrivere correttamente il metodo setter della proprietà.

assign

Per default il compilatore assume che alla variabile di istanza sarà assegnato (assign) il valore del parametro ricevuto (senza effettuare nessun retain nel caso di oggetto). Inoltre, sempre per default, nel metodo non sarà generato alcun codice per trattare il multithreading, ad esempio il lock prima dell'assegnazione.

readwrite

La definizione readwrite, che è il comportamento di default, significa che saranno generati sia il setter, sia il getter. Per definire una proprietà di sola lettura, possiamo eliminare il setter, scrivendo read, se invece la proprietà dovrà essere solo scritta si elimina il getter scrivendo solo write.

Impostazioni di default

Un metodo setter, per default, soddisferà le condizioni di atomic, assign e readwrite.

Per le proprietà che incapsulano una variabile di tipo scalare (non vale quindi per oggetti e collezioni) gli argomenti possibili saranno assing, atomic o nonatomic e i modificatori di visibilità (read, write, readwrite).

retain e copy

Quando si specifica retain il codice generato invierà, all'interno del metodo, un messaggio di retain alla variabile ricevuta come argomento. Se si specifica copy la variabile di istanza sarà assegnata ad un clone, e quindi la variabile di istanza sarà indipendente per quanto riguarda la gestione di memoria dal parametro ricevuto.

retain, assign, e copy sono mutualmente esclusive cioè se si inserisce una parola chiave non possono essere utilizzate le altre due; lo stesso dicasi per atomic e nonatomic e per read, write, readwrite.

Ti consigliamo anche