1.既然設定了ARC,為什麼還需要@autoreleasepool,有什麼好處?
池子做的是運行時延遲釋放,ARC已經在編譯時解決了手動管理的問題,那麼就沒必要使用@autoreleasepool,還佔記憶體。
2、ARC頻繁釋放記憶體 和@autoreleasepool一起釋放 感覺還是前者 要好些,
這不是像資料連接池一樣可以共享資源。只是延遲釋放記憶體(又不能共享記憶體)。
按著這個推論在ARC條件下,沒必要使用@autoreleasepool。
我知道這種想法有問題,但不知道是哪裡,新手問題多,莫噴
ARC 並不是捨棄了
@autoreleasepool
,而是在编译阶段帮你插入必要的retain
/release
/autorelease
的程式碼呼叫。所以,跟你想像的不一樣,ARC 之下依然是延時釋放的,依然是依賴於
NSAutoreleasePool
,跟非ARC 模式下手動調用那些函數本質上毫無差別,只是編譯器來做會保證引用計數的正確性。參考:
用@autoreleasepool是有用的。
正常情況下,你所建立的變數會在超出其作用域的時候被釋放掉。
而如果你的函數寫的很長,在你函數運行過程中出現很多中間變量,佔據了大量的內存,怎麼辦?
用@autoreleasepool。
在@autoreleasepool中創建的變量,會在@autoreleasepool結束的時候執行一次release,進行釋放。其實@autoreleasepool就相當於一層作用域。