W wielu Książkach i na wielu stronach widzę - drenaż. Cóż, w przypadku puli autorelease, która brzmi fajnie. Ale czy robi coś innego niż wydanie? Zgaduję, że -druga po prostu sprawia, że Puli można uwolnić wszystkie jej obiekty, nie zwalniając samej Puli. Tylko zgadnij.Jaka jest różnica między wysyłaniem - wypuszczaniem lub przepuszczaniem do puli autoreas?
Odpowiedz
Należy zauważyć, że komentarze na temat odpowiedzi tlenowej mówią, że -drain nie zwalnia NSAutoreleasePool, są nieprawidłowe. documentation for NSAutoreleasePool wyraźnie mówi, że -drain uwalnia (i tym samym niszczy) NSAutoreleasePool.
-reklama jest zamiennikiem dla użycia - do pracy z obiektami NSAutoreleasePool, z tą różnicą, że stanowi wskazówkę dla systemu czyszczenia pamięci.
Jeśli system ma zbieranie śmieci, a następnie wysłać wiadomość -drain (objc_collect_if_needed) dla GC
Jeśli nie masz GC, odcedzić = zwolnij
, więc a-drain również uwolni samą pulę, prawda? – Thanks
-retain i -drain metody nie zmienia retainCount obiektu NSAutoreleasePool one tylko wysłać wiadomość zwalniającą do wszystkich obiektów w basenie Nie wiem, w jaki sposób i kiedy obiekty NSAutoreleasePool są destroing ((( – oxigen
Nie, drenaż zwalnia Nie ma żadnej magii, jeśli chodzi o autoreasowanie puli i zatrzymywanie zliczeń, przestrzegają tych samych reguł, co każdy inny obiekt, z tym wyjątkiem, że nie mogą być zatrzymane lub automatycznie usunięte (co zresztą i tak nie miałoby większego sensu) –
Oxigen ma rację, zapoznać się z dokumentacją metody drain
z NSAutoreleasePool:
W warunkach referencyjnych liczone uwolnienia i zdejmuje odbiornika; w środowisku ze zbieraniem śmieci wyzwala zbieranie śmieci, jeśli pamięć przydzielona od ostatniej kolekcji jest większa niż aktualny próg .
- 1. Jaka jest różnica między używaniem puli wątków a normalnym wątkiem?
- 2. Jaka jest różnica między funkcjami "wyślij" i "wyślij" Clojure w związku z wysyłaniem akcji do agenta?
- 3. Dlaczego warto korzystać z puli autoreas?
- 4. Jaka jest różnica między? : i ||
- 5. Jaka jest różnica między $ i $$?
- 6. Różnica między tożsamością puli połączeń i puli aplikacji
- 7. Jaka jest różnica między operatorem zwarć Perla (lub, i) a (||, &&)?
- 8. Jaka jest różnica między DAX a Power Query (lub M)?
- 9. Jaka jest różnica między zbrojeniem a zbrojeniem3? lub erlang.mk
- 10. Jaka jest różnica między this.route() a this.resource()?
- 11. Jaka jest różnica między Moq-ing klasy lub interfejsu?
- 12. Jaka jest różnica między Ember.computed.alias a Ember.binding?
- 13. Jaka jest różnica lub związek między Type i TypeInfo?
- 14. Jaka jest różnica między sqlite3 a pdo_sqlite
- 15. jaka jest różnica między installshield i windowsinstaller
- 16. Guid.Parse() lub nowy Guid() - Jaka jest różnica?
- 17. Jaka jest różnica między java i jsp?
- 18. Jaka jest różnica między UIViewController a UITableViewController
- 19. Jaka jest różnica między wewnętrzną logiką SSE?
- 20. Jaka jest różnica między .substr (0,1) lub .charAt (0)?
- 21. Jaka jest różnica między XAMPP lub WAMP Server i IIS?
- 22. Jaka jest różnica między wyjątkami, InvalidArgumentException lub UnexpectedValueException?
- 23. Jaka jest różnica między Json i Jsonp?
- 24. Jaka jest różnica między opisem a żartem?
- 25. jaka jest różnica między difftime i "-"?
- 26. Jaka jest różnica między `##` i `hashCode`?
- 27. Jaka jest różnica między angularjs a dust.js?
- 28. Jaka jest różnica między ssize_t i ptrdiff_t?
- 29. Jaka jest różnica między System.Net.Cookie i System.Web.HttpCookie?
- 30. Jaka jest różnica między Application_AuthenticateRequest i FormsAuthentication_OnAuthenticate
Dzięki. Więc w systemie iPhone OS lepiej jest użyć - raczej zrezygnować z - drenażu? – Thanks
W środowisku innym niż GC są takie same. Z wyjątkiem rzadkiego przypadku, gdy z jakiegoś powodu nie chciałbyś podać wskazówki systemowi GC, jeśli kod był kiedykolwiek używany w trybie GC, nie ma powodu, aby używać wersji zamiast drenażu w kierowaniu kodu 10.4+. – smorgan
Apple używa -release dla ARP w funkcji main() ... – Thanks