The essential thing you showed in your code is that you went into a loop while 
waiting for isPlaying to turn to NO, or at least never returned from your 
action method back to AppKit. I don't hear you saying otherwise.

If that's what you're doing, bear in mind that other APIs (I'm thinking of 
Foundation networking; I can all but guarantee that NSSound is the same) are 
"supposed to run asynchronously," but that means that you can — you _must_ — 
return from the event that started the network transaction, all the way back to 
AppKit; and _must not_ block waiting for completion. 

It's the run loop, and not your code, that detects completion. The completion 
notifications will not arrive unless control returns to an AppKit/UIKit 
runloop. You get the notification through the delegate method. It's not like 
spawning a thread and waiting for it to clear a flag.

        — F

On 22 Jul 2012, at 7:43 PM, Jay Reynolds Freeman wrote:

> The "sleep" was only for instrumentation; without the sleep and the NSLog, 
> the code exhibits the problem described.  And [NSSound play] is supposed to 
> run asynchronously ...


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to