Le 31 mai 2012 à 22:28, Lane Roathe a écrit :

> 
> On May 31, 2012, at 2:00 PM, Jean-Daniel Dupas <devli...@shadowlab.org> wrote:
> 
>> Le 31 mai 2012 à 18:00, Jens Alfke a écrit :
>> 
>>> On May 31, 2012, at 8:47 AM, Antonio Nunes wrote:
>>> 
>>>> static void *kMyVLFContext = &kMyVLFContext;
>>> ... 
>>>>    @synchronized(kMyVLFContext) {
>>> 
>>> Huh? I thought the parameter to @synchronized(…) had to be an object 
>>> reference?
>> 
>> 
>> The Objective-C reference agree with you.
>> 
>> «The @synchronized() directive takes as its only argument any Objective-C 
>> object, including self.»
>> 
>> http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocThreading.html%23//apple_ref/doc/uid/TP30001163-CH19-SW1
>> 
>> I'm surprised the compiler does not complain when passing an arbitrary 
>> pointer.
> 
> That's because the compiler can't know it's invalid, due to the use of void * 
> as the var type (void * pretty much matches everything, including id, must 
> like id matches any object reference).

> -lane

This is barely an excuse. Trying to send a message to a void * ptr result in 
the following warning:

receiver type 'void *' is not 'id' or interface pointer, consider casting it to 
'id'

So, the compiler is perfectly able to complain when you use a void* instead of 
an objc object.


-- Jean-Daniel





_______________________________________________

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