Ecco le informazioni su ciò che so sulle proprietà delle variabili
- atomic // predefinito
- non atomico
- forte = conserva // predefinito
- debole
- trattenere
- assegna // predefinito
- unsafe_unretained
- copia
- sola lettura
- readwrite // predefinito
quindi di seguito è riportato il collegamento dettagliato dell'articolo in cui puoi trovare tutti gli attributi sopra menzionati, che ti aiuteranno in modo provocatorio. Mille grazie a tutte le persone che qui danno le migliori risposte !!
Attributi delle proprietà variabili o modificatori in iOS
01. strong (iOS4 =
keep ) - dice "tienilo nell'heap fino a quando non lo indico più" - in altre parole "sono il proprietario, non puoi deallocarlo prima di mirare bene con quello stesso di keep "- Usi forte solo se hai bisogno di trattenere l'oggetto. - Per impostazione predefinita, tutte le variabili di istanza e le variabili locali sono puntatori forti. - Generalmente usiamo strong per UIViewControllers (i genitori degli elementi dell'interfaccia utente) - strong viene utilizzato con ARC e fondamentalmente ti aiuta, non dovendo preoccuparti del conteggio di conservazione di un oggetto. ARC lo rilascia automaticamente quando hai finito. Usare la parola chiave forte significa che sei il proprietario dell'oggetto.
Esempio:
@property (strong, nonatomic) ViewController *viewController;
@synthesize viewController;
02. weak (iOS4 = unsafe_unretained)
- dice "tienilo finché qualcun altro lo indica fortemente" - la stessa cosa di assign, no hold o release - Un riferimento "debole" è un riferimento che non mantieni. - Generalmente usiamo deboli per IBOutlet (UIViewController's Childs). Questo funziona perché l'oggetto figlio deve esistere solo finché esiste l'oggetto genitore. - un riferimento debole è un riferimento che non protegge l'oggetto referenziato dalla raccolta da parte di un garbage collector. - Debole è essenzialmente assegnare, una proprietà non mantenuta. Tranne quando l'oggetto viene deallocato, il puntatore debole viene automaticamente impostato a zero
Esempio :
@property (weak, nonatomic) IBOutlet UIButton *myButton;
@synthesize myButton;
Spiega : grazie a BJ Homer
Immagina che il nostro oggetto sia un cane e che il cane voglia scappare (essere deallocato). I puntatori forti sono come un guinzaglio per il cane. Finché hai il guinzaglio attaccato al cane, il cane non scapperà. Se cinque persone attaccano il guinzaglio a un cane, (cinque forti puntatori a un oggetto), il cane non scapperà finché tutti e cinque i guinzagli non saranno staccati. Gli indicatori deboli, d'altra parte, sono come bambini piccoli che indicano il cane e dicono "Guarda! Un cane!" Finché il cane è ancora al guinzaglio, i bambini piccoli possono ancora vedere il cane e lo indicheranno ancora. Non appena tutti i guinzagli vengono staccati, però, il cane scappa, non importa quanti bambini lo stiano indicando. Non appena l'ultimo puntatore forte (leash) non punta più a un oggetto, l'oggetto verrà deallocato e tutti i puntatori deboli verranno azzerati. Quando usiamo debole? L'unico momento in cui vorresti usare deboli, è se volessi evitare i cicli di conservazione (ad esempio, il genitore mantiene il bambino e il bambino mantiene il genitore in modo che nessuno dei due venga mai rilasciato).