[MacRuby-devel] MacRuby pointers and Obj-C function returning a value by reference

kwicher at wichry.net kwicher at wichry.net
Tue Jan 22 13:48:14 PST 2013


Thanks Watson

It was helpful and actually it is not even needed to assign the value to the range.

I realised that I was dereferencing the object in wrong places.

Best

K

> 
> Date: Tue, 22 Jan 2013 07:30:47 +0900
> From: Watson <watson1978 at gmail.com>
> To: "MacRuby development discussions."
> 	<macruby-devel at lists.macosforge.org>
> Subject: Re: [MacRuby-devel] MacRuby pointers and Obj-C function
> 	returning a alue by reference
> Message-ID: <B3F0BF946E734CB99298C874783639D6 at gmail.com>
> Content-Type: text/plain; charset="utf-8"
> 
> Hi
> 
> Maybe, you could write your code as following:
> 
> $ macirb --simple-prompt
>>> framework 'AppKit'
> => true
>>> range = Pointer.new(NSRange.type)
> => #<Pointer:0x40122e760>
>>> range.assign NSMakeRange(0,1)
> => #<NSRange location=0 length=1>
>>> str = NSAttributedString.alloc.initWithString("hello")
> => hello{
> }
>>> str.attribute(NSUnderlineStyleAttributeName, atIndex:0, effectiveRange:range)
> => nil
> 
> 
> 
> Cheers.
> Watson
> 
>> I am trying to implement the following method of NSAttributedString in Macruby:
>> 
>> - (id)attribute:(NSString *)attributeName atIndex:(NSUInteger)index effectiveRange:(NSRangePointer)aRange
>> 
>> As by definition, it `Returns the value for an attribute with a given name of the character at a given index, and by reference the range over which the attribute applies.`
>> 
>> OK, so I need a pointer to NSRange, which I set up as follows:
>> 
>> range=Pointer.new("{_NSRange=QQ}")[0]
>> 
>> It seems to be fine as `range.class` => `NSRange`.
>> 
>> However, when I execute the method: 
>> 
>> font=txtStor.attribute(NSFontAttributeName,atIndex:index,effectiveRange:range)
>> 
>> my `range` is always `#<NSRange location=0 length=0>`. Also, `p range` gives me `#<NSRange location=0 length=0>`.
>> 
>> Any ideas how to implement this correctly?
>> 
>> Thanks
>> K
>> _______________________________________________
>> MacRuby-devel mailing list
>> MacRuby-devel at lists.macosforge.org (mailto:MacRuby-devel at lists.macosforge.org)
>> http://lists.macosforge.org/mailman/listinfo/macruby-devel
>> 
>> 
> 



More information about the MacRuby-devel mailing list