Re: Receiver type for instance message is a forward declaration
Re: Receiver type for instance message is a forward declaration
- Subject: Re: Receiver type for instance message is a forward declaration
- From: Quincey Morris <email@hidden>
- Date: Fri, 06 May 2016 14:34:07 -0700
- Feedback-id: 167118m:167118agrif8a:167118sbz7l15ghZ:SMTPCORP
On May 6, 2016, at 13:32 , Carl Hoefs <email@hidden> wrote:
>
> Once in a while, NSOperationQueue -addOperation: throws an exception. I guess this is a well-known bug going all the way back to 2008. I found Mike Ash's writeup on the issue, and have downloaded his replacement class, RAOperationQueue. However, it was written long ago for GC not ARC.
As a side issue, you didn’t give us any explicit references to Mike’s discussion, but looking back through his blog (mikeash.com/pyblog/use-nsoperationqueue.html), I see that he reported that *his* problem was fixed in 10.5.7:
> "Mac OS X 10.5.7 has shipped and includes a fix for the NSOperationQueue bug that I discovered late last year. I have run all of my old test cases against 10.5.7 and it appears to perform as advertised. As far as I can see, NSOperationQueue is now safe to use.”
These days, if I had any doubts about NSOperationQueue, I’d switch to using GCD directly. There’s very little that NSOperationQueue does that GCD doesn’t, and I must admit I’ve never regarded NSOperationQueue as superior**, apart from the fact that it got here first. (IIRC) NSOperationQueue started to displace raw threading only just before GCD arrived on the scene.
** There is, however, a small cloud hovering over GCD. This has been reported in the developer forums independently by different developers. Apparently, a GCD queue (under what circumstances isn’t clear) can use additional memory for each block that’s ever queued. That is, if a queue has historically run and disposed of N blocks, it will keep N * X bytes of memory around, even though its queue might currently be empty. The value of X is very small, so you have to go through tens of thousands of blocks before you’d even notice. It’s not clear if this is a memory leak, or a cache that would eventually stop increasing in size and/or be reclaimed.
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden