Hi all, NSFormatter defines a method with the following selector:
isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription: This is its signature: - (BOOL)isPartialStringValid:(NSString **)partialStringPtr proposedSelectedRange:(NSRangePointer)proposedSelRangePtr originalString:(NSString *)origString originalSelectedRange:(NSRange)origSelRange errorDescription:(NSString **)error The relevant bit here is the proposedSelRangePtr argument, which is a NSRangePointer. When subclassing NSFormatter in ruby, I define the method as: def isPartialStringValid(partialStringPtr, proposedSelectedRange:proposedSelRangePtr, originalString:origString, originalSelectedRange:origSelRange, errorDescription:error) When implementing the Cocoa Programming exercises in MacRuby, I ran across the following situation: At some point in that method definition, in the original code, Aaron sets the range properties directly: proposedSelRangePtr->location = [*partialStringPtr length]; proposedSelRangePtr->length = [match length] - proposedSelRangePtr->location; Initially, I did similar in MacRuby proposedSelRangePtr[0].location = partialStringPtr[0].length proposedSelRangePtr[0].length = match.length - proposedSelRangePtr[0].location This has no effect. It does not raise, but the values go unchanged. I can NSLog the range values before and after and they're the same. My final solution was to assign a new range to that location: proposedSelRangePtr[0] = NSRange.new(partialStringPtr[0].length, match.length - partialStringPtr[0].length) But I wonder why setting the range properties had no effect. MacRuby bug? _______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel