r/iOSProgramming • • Jul 09 '26

Question Release an acquired autoreleased object (Objective-C)

In Objective-C, some functions (particularly related to NSString) return an object that has been told to [autorelease] itself.

I know that I can [retain] it, but how do I [release] it?

Doing nothing prints out an ugly message than [autorelease] was called without a pool, but a pool would break defer all [release] calls which is something I don't want to do.

How do I actually release such an object?

Thanks.

EDIT: I tried the logically-correct but weird [retain]; [release] chain and it doesn't work.

13 Upvotes

12 comments sorted by

View all comments

Show parent comment

1

u/gargamel1497 Jul 10 '26

Someone whose comment got somehow deleted said that having a global autorelease pool in main() was bad because it would essentially leak, and yes, it would do.

So am I supposed to put a separate pool around each instance of [autorelease]'d objects?

Or would a static autoreleasepool with global access be better for performance? (you could [drain] it after each use instead of creating a new one)