seniorObjective-C
How does autorelease work under the hood in ARC-enabled Objective-C?
Updated May 17, 2026
Short answer
Autorelease queues objects for deferred release at pool drain time.
Deep explanation
ARC converts autorelease into calls to objc_autoreleasePoolPush/Pop. Each thread maintains a stack of autorelease pools. Objects added are stored in a per-thread pool. When the pool drains, all objects are sent release messages in batch. This reduces memory churn but can cause spikes if misused in loops.
Unlock with a Pro subscription to view this section.
View pricingReal-world example
No real-world example available yet.
Unlock with a Pro subscription to view this section.
Upgrade to ProCommon mistakes
No common mistakes listed yet.
Unlock with a Pro subscription to view this section.
Upgrade to ProFollow-up questions
No follow-up questions available yet.
Unlock with a Pro subscription to view this section.
Upgrade to Pro