È probabile che si verifichi un arresto anomalo del sistema quando l'oggetto viene normalmente rilasciato automaticamente. autorelease
significa "rilascio ritardato", quindi verrà rilasciato: solo più tardi. Dato che l'oggetto non esisterà più tardi mentre lo si sta scaricando manualmente, è probabile che si verifichi un arresto anomalo a causa del runtime che invia il messaggio -release
all'oggetto now-deallocated.
Modifica: si noti che se si esegue il ripristino automatico degli oggetti -retain
, è necessario farlo -release
: si acquisisce la proprietà.
fonte
2010-05-04 23:57:25
Diciamo che (per qualsiasi motivo) io * lo * voglio che venga rilasciato in questo momento. "[[Obj retain] release]" è un'opzione valida? – noamtm
Non proprio. In tal caso, dovresti racchiudere l'intera cosa in @autoreleasepool {} per creare e distruggere il pool in cui si sta verificando l'autorelease. –
d'accordo, avvolgere l'intera cosa in @autoreleasepool –