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 pricing

Real-world example

No real-world example available yet.

Unlock with a Pro subscription to view this section.

Upgrade to Pro

Common mistakes

No common mistakes listed yet.

Unlock with a Pro subscription to view this section.

Upgrade to Pro

Follow-up questions

No follow-up questions available yet.

Unlock with a Pro subscription to view this section.

Upgrade to Pro

More Objective-C interview questions

View all →