- ARC下面,我們使用@autoreleasepool{}來使用一個Autoreleasepool,實際上UIKit 通過RunLoopObserver 在RunLoop二次Sleep間Autoreleasepool進(jìn)行Pop和Push,將這次Loop產(chǎn)生的autorelease對象釋放 對編譯器會編譯大致如下:
void *DragonLiContext = objc_ AutoreleasepoolPush();
// {} 的 code
objc_ AutoreleasepoolPop(DragonLiContext);
- 釋放時機(jī): 當(dāng)前RunLoop迭代結(jié)束時候釋放.
更多:iOS面試題合集