On Dec 17, 2009, at 8:55 AM, Jens Alfke wrote: > On Dec 16, 2009, at 10:04 PM, PCWiz wrote: >> I'm not using NSLock or NSRecursiveLock directly. I'm using @synchronized on >> an object that multiple threads acess, to allow only one thread to access >> the object at a time. > > The fact that the description of the lock is "<NSRecursiveLock: 0x16c2340> > '(null)'" makes me suspect that you're synchronizing on a nil pointer, i.e. > that when you call > @synchronized(foo) { ... } > the value of foo is nil. I'm pretty sure that's illegal, and I would have > thought it would throw an exception, but maybe not. Try putting a check above > the block, something like > NSAssert(foo!=nil, @"no foo");
@synchronized does not use NSRecursiveLock. Any NSRecursiveLock problems you have are unrelated to @synchronized. @synchronized(nil) silently locks nothing. You can set environment variable OBJC_DEBUG_NIL_SYNC=YES to turn on logging for @synchronized(nil). -- Greg Parker gpar...@apple.com Runtime Wrangler _______________________________________________ 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com