GNUStep NSAutoreleasePool incompatibilità
-
18-09-2019 - |
Domanda
un altro post Stack Overflow il messaggio è un drain
apple ha chiamata solo:
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSLog (@"Hello");
[pool drain];
return 0;
E 'sicuro di sostituire drain
con release
? Sto cercando di porting di un'applicazione Objective-C per l'esecuzione su Linux (Ubuntu al momento). Dovrei rinunciare anche prima che ho iniziato? (Sto già avendo problemi cercando di ottenere lavoro NSURLConnection
)
Soluzione
Dalla documentazione di Apple drain
:
[...] questo metodo si comporta come liberazione. [...]
Quindi drenaggio di una piscina autorelease significa deallocando inevitabilmente. A mio parere, Apple dovrebbe deprecare drain
in quanto crea solo confusione.
Ma:
Considerazioni particolari:
In un ambiente di garbage collection,release
è un no-op, quindi a meno che non si vuole per dare il collettore un suggerimento è importante utilizzaredrain
in qualsiasi codice che può essere compilato per un garbage collection ambiente.