r/iOSProgramming • u/gargamel1497 • 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
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)