I'm getting crashes using an outlineView data source fed by an array of
numbers. The crash happens after fiddling around in the view, usually after
some variable small delay. Upon crash, the debugger is always stopped in
'class_getSuperclass'.
The crash only happens using Integers or Floats over 12.
I've simplified it down to this sparse MyDocument class that can be put into a
document-based app. Put an outline view into MyDocument.xib and connect the
datasource delegate to MyDocument.
I'm new at this, so if an experienced MacRubyist can show me what I'm doing
wrong, I will be very grateful.
thanks, m
<<code snippet start>>
class MyDocument < NSDocument
attr_accessor :dataSourceArray
def init
super
if (self != nil)
# Add your subclass-specific initialization here.
# If an error occurs here, return nil.
end
self
end
def awakeFromNib
#@dataSourceArray = [1,2,3,4,5,6,7,8,9,10,11,12] #survives
@dataSourceArray = [1,2,3,4,5,6,7,8,9,10,11,12,13] #crashes, anything over
12
#@dataSourceArray = [0.to_i,8.to_i,116.to_i,224.to_i,400.to_i,1000.to_i]
#crashes
#@dataSourceArray = 13.0 #float also crashes
#@dataSourceArray = [10] #survives
#@dataSourceArray = [99] #crashes
#@dataSourceArray = 99 #crashes
#@dataSourceArray = 9 #survives
#@dataSourceArray = [NSNumber.numberWithInt(99)] #crashes
#@dataSourceArray = Array.new [117] #crashes
#@dataSourceArray = [1,2,3,4,[5,6],7,8,9,0] #survives
#@dataSourceArray = [0,8,116,224,400,1000] #crashes
#@dataSourceArray = [0.to_s,8.to_s,116.to_s,224.to_s,400.to_s,1000.to_s]
#survives
#@dataSourceArray =
[:zero,:eight,:onesixteen,:twotwentyfour,:fourhundred,:hundredyoh] #survives
end
def windowNibName
"MyDocument"
end
################## DataSource for OV #######################
def outlineView(outlineView, numberOfChildrenOfItem:item)
if item.is_a? Array
return item.count
end
1
end
def outlineView(outlineView, isItemExpandable:item)
(item == nil) || ((item.is_a? Array) && (item.count > 0))
end
def outlineView(outlineView, child:index, ofItem:item)
#returns child item objects
if item == nil
return @dataSourceArray #root item
end
if item.is_a? Array
return item[index]
end
return nil
end
def outlineView(outlineView, objectValueForTableColumn:tableColumn,
byItem:item)
# returns the object represented by the column at this item
item.to_s
end
end
<<code snippet end>>
_______________________________________________
MacRuby-devel mailing list
[email protected]
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel