[MacRuby-devel] Crash with NSUInteger in delegate method
Laurent Sansonetti
lsansonetti at apple.com
Fri May 22 10:14:03 PDT 2009
Hi Łukasz,
On May 22, 2009, at 1:58 AM, Łukasz Adamczak wrote:
>> an NSNumber object should do it.
>
> Laurent, thanks for the answer. I believed that was the case.
>
> What about the delegate method case, though? I mean, the framework I'm
> playing with expects a certain delegate method and passes C unsigned
> ints to it:
>
> http://github.com/lukhnos/objectiveflickr/blob/b480aa39fa0e96f40a1b44523e0b6f918b2ed441/Source/ObjectiveFlickr.m#L525
>
> In this case I have no say in the Objective-C side of things. I write
> only Ruby code. The only thing I can do is to not implement the method
> at all (and lose some functionality provided by the framework).
> Obviously in an open-source environment I'm free to patch the library
> to my liking, but that's not optimal and not always possible.
>
> There may be more cases like this. Unless there is a policy on not
> using primitive types in delegates (is there?), more libraries (or
> maybe Cocoa itself?) can have problems with MacRuby.
MacRuby can deal with specialized delegate methods like this one, but
you need to generate a bridgesupport file for the framework you're
targeting. Most frameworks that ship with Mac OS X are already
covered, but in your case you might want to manually cover
ObjectiveFlickr too.
You can learn more by reading the gen_bridge_metadata(1) or
BridgeSupport(5) man-pages.
What's going to happen is that informal protocols will be described
and at runtime MacRuby will appropriately use the right method
encoding in case the selector matches.
HTH,
Laurent
More information about the MacRuby-devel
mailing list