Ho appena convertito un vecchio progetto in ARC utilizzando il refactoring automatico di Xcode.Dopo la conversione Auto-ARC: assegnazione di un oggetto mantenuto a una proprietà non sicura; l'oggetto verrà rilasciato dopo l'assegnazione
@property (nonatomic, retain) NSMutableArray *cards;
è stato sostituito da:
@property (nonatomic) NSMutableArray *cards;
Ciò ha senso perché quello che ho letto è che "forte" è lo stato di default. Tuttavia, la seguente riga mi sta dando l'errore nel titolo:
self.cards = [[NSMutableArray alloc] initWithCapacity:54];
L'errore viene risolto con l'aggiunta strong
indietro nel cui conservano usato per essere:
@property (nonatomic, strong) NSMutableArray *cards;
Comunque ... se ho bisogno per tornare indietro e inserire strong
in ogni dichiarazione @property che era retain
... perché il refactoring ARC li ha rimossi tutti?
In realtà, la semantica di gestione della memoria predefinita è 'assign', non' strong', motivo per cui si sta ricevendo il messaggio di avviso. – jlehr
jlehr non ha ragione riguardo la semantica di gestione della memoria predefinita. ma non ha torto neanche prima di LLVM 3.1 e ARC l'impostazione predefinita è stata assegnata. ma al giorno d'oggi è forte. questo purtroppo è molto scarsamente documentato. vedi la risposta di nschum. – stigi
Ora che il valore predefinito è elevato, l'avviso dovrebbe essere sparito. Perché non è così? –