Re: Namespace clash problem
Re: Namespace clash problem
- Subject: Re: Namespace clash problem
- From: Graham Cox <email@hidden>
- Date: Fri, 14 Oct 2011 12:32:16 +1100
Ah, that's clear, but I now see why I'm going wrong.
The object in question is actually a class, where it has a class method +style. But the class is passed as the 'object' parameter of a notification, which has type id. How do I typecast that to the precise class type I'm expecting? Using (MyClass*) doesn't work because that is an instance. It's probably obvious, but I'm not stumbling upon it...
--Graham
On 14/10/2011, at 11:28 AM, Jens Alfke wrote:
>
> On Oct 13, 2011, at 4:29 PM, Graham Cox wrote:
>
>> When I go into this warning, it further states it's using [NSProgressIndicator style] instead of my own declared method style which exists in many different objects (and which would be correct).
>
> This only happens when calling -style on an untyped (id) pointer. Cast the pointer to your class and you won’t have a problem. Instead of
> [[array lastObject] style]
> use
> [(MyClass*)[array lastObject] style]
> This has the added advantage that, if you ever renamed or removed your -style method, the compiler would be able to warn you if you didn’t fix this call.
>
>> (<RANT> why do Apple have to steal such obvious names when they know there is a namespace problem? This could easily have been named 'progressIndicatorStyle' and have much less chance of clashing with user code.
>
> I would rather have shorter, clearer names in framework classes. The name-collision thing doesn’t happen to me often, and when it does I just use a typecast like above.
>
> —Jens
_______________________________________________
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