Qual è il ruolo della parola chiave copy
nel ARCQual è il ruolo della "copia" nel ARC
trovo il (parola chiave) copy
possono essere utilizzati in ARC mentre retain
e release
non possono essere utilizzati. Inoltre, il ruolo di copy
in ARC corrisponde al ruolo di copy
in MRC? Se sì, copy
fa il retainCount
+1 in ARC?
E ho visto Mike blog di cenere su Arche detto:
è necessario copiare esplicitamente blocchi che vengono passati come parametri id:
[myArray addObject: [^{ DoSomethingMagical(); } copy]];
ma quando prova codice come questo (senza usare copy
) funziona bene anche.
NSArray *array = [[NSArray alloc] initWithObjects:^{NSLog(@"hahaha");}, nil];
[self test:[array objectAtIndex:0]];
- (void)test:(void (^)(void))completion
{
completion();
}
Vuol dire che non v'è alcuna necessità di copy
blocco quando usato come un tipo id
?
Il numero di ritenzione non aumenta utilizzando la copia in MRC o in ARC. – Rakesh
@rakesh più preciso nel dire "il numero di ritardi * potrebbe * essere aumentato in ARC/MRR" in quanto è un dettaglio di implementazione. Per NSMutableString? Ne ottieni una copia Per NSString? Arresta il conteggio dei ritardi di uno e restituisce lo stesso oggetto. – bbum
Si noti che il blocco nell'esempio è probabilmente un blocco statico e, pertanto, il proprio codice potrebbe "funzionare" solo per coincidenza. – bbum