Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does every thread need its own autorelease pool?

Does every thread have to have its own pool? I am writing an iPhone app which uses threads. If I do not put a pool on a thread it complains abut leaking.

What I wanted to do was to store some object which outlives the thread. How can I do it?

like image 803
John Smith Avatar asked Dec 22 '22 19:12

John Smith


1 Answers

No, every NSThread has its own NSRunLoop, but not its own NSAutoreleasePool. Thus you have to create one and if you are performing a large operation or a operation that needs a lot of time, you really should drain the pool from time to time to keep your memory footprint low.

Object storage isn't bound to a thread at all, you can access every object from every thread you want, but it is possible that the accessor to the object isn't threadsafe and thus kills your app. However, this depends on your app and your code and not on threads.

like image 134
JustSid Avatar answered Jan 06 '23 16:01

JustSid