Perché ARC non può utilizzare una versione normale?Perché si autorelease ARC quando si utilizzano riferimenti deboli?
Esempio:
[weakObject doSomething];
Da quello che ho capito, ARC trasforma questo in:
Object *strongObject = objc_autorelease(objc_loadWeakRetained(weakObject));
[strongObject doSomething];
Perché non ARC fare questo, invece ?:
Object *strongObject = objc_loadWeakRetained(weakObject);
[strongObject doSomething];
objc_release(strongObject);
mi piacerebbe piace eliminare tutti i possibili autoreleases in ARC. Faccio un sacco di async filettatura con GCD e finisco dover aggiungere piscine autorelease un sacco:
dispatch_async(self.myQueue, ^{
@autoreleasepool{
[weakObject doSomethingBig];
}
});
Mancanza di un compilatore sufficientemente intelligente, in pratica. Potrebbe valere un bug report, anche se è probabile che sia stato archiviato ed è sicuramente noto. –
Da dove viene visualizzato weakObject? –