• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Receiver type for instance message is a forward declaration
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


  • Follow-Ups:
    • Re: Receiver type for instance message is a forward declaration
      • From: Carl Hoefs <email@hidden>
    • Re: Receiver type for instance message is a forward declaration
      • From: Alex Zavatone <email@hidden>
References: 
 >Receiver type for instance message is a forward declaration (From: Carl Hoefs <email@hidden>)

  • Prev by Date: Re: Receiver type for instance message is a forward declaration
  • Next by Date: Re: Receiver type for instance message is a forward declaration
  • Previous by thread: Re: Receiver type for instance message is a forward declaration
  • Next by thread: Re: Receiver type for instance message is a forward declaration
  • Index(es):
    • Date
    • Thread