开发者

NSOperationQueue, memory and GCD; how to implement properly?

开发者 https://www.devze.com 2023-02-18 17:28 出处:网络
I have some simple doubts about NSOperation and GCD that I have not found answer to on the documentation.

I have some simple doubts about NSOperation and GCD that I have not found answer to on the documentation.

The firs ques开发者_Go百科tion is related to memory management:

I want to know if I need to create an Autorealease pool for the methods I wil add to the NSOperationQueue; similarly to when you run a method on different thread without NSOperations.

The next question is whether NSOperation takes care of GCD or if this needs to be done manually?

Thank you for your help!


I just saw your question here and there is a post on the apple dev forums you might be interested in. According to one of the apple guys on this thread so long as you run your NSOperation through an NSOperationQueue you do not need to create your own autorelease pool as the NSOperationQueue does it for you.

Also the docs for NSOperationQueue apparently need to be updated/corrected. On devices running iOS 4 or later NSOperationQueue does use GCD despite what the class reference documents say.


According to the documentation, you should create an NSAutoreleasePool in the main method of your NSOperation. The documentation for NSInvocationOperation and NSBlockOperation doesn't specify whether they create an autorelease pool for you, so to be safe it would be best to create one when using those classes too.

The NSOperationQueue handles queuing and executing the operations, so you shouldn't have to mess with GCD yourself for tasks related to the operation queue.

0

精彩评论

暂无评论...
验证码 换一张
取 消