...and adds a few utility methods, for example...
@implementation HeatbugsWorld
+ (id)createBegin:(id)z withModel:(HeatbugsModel *)m andSize:(HBSize)s {
HeatbugsWorld *this = [Grid2d create:m setSizeX:(int)s.width Y:(int)s.height];
/*! Now set up the grid used to represent agent position... */
this->size = s;
return self;
}
- (HBLength)width {
return size.width;
}
- (HBLength)height {
return size.height;
}
- (HBSize)size {
return size;
}
@end
...however, that crashes on `
[Grid2d create:m setSizeX:(int)s.width Y:(int)s.height];'. The stack & crashlog...
2009-11-17 14:20:40.679 Heatbugs[1157:6807] +[HeatbugsModel allocIVars:]: unrecognized selector sent to class 0xa3b0
2009-11-17 14:20:40.680 Heatbugs[1157:6807] An uncaught exception was raised
2009-11-17 14:20:40.680 Heatbugs[1157:6807] +[HeatbugsModel allocIVars:]: unrecognized selector sent to class 0xa3b0
2009-11-17 14:20:40.682 Heatbugs[1157:6807] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[HeatbugsModel allocIVars:]: unrecognized selector sent to class 0xa3b0'
*** Call stack at first throw:
(
0 CoreFoundation 0x95a1358a __raiseError + 410
1 libobjc.A.dylib 0x93460f49 objc_exception_throw + 56
2 CoreFoundation 0x95a5fa9b +[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3 CoreFoundation 0x959bb026 ___forwarding___ + 950
4 CoreFoundation 0x959babf2 _CF_forwarding_prep_0 + 50
5 Swarm 0x000826bb +[Grid2d createBegin:] + 59
6 Swarm 0x00080b3c +[Discrete2d create:setSizeX:Y:] + 55
7 Swarm 0x0008267a +[Grid2d create:setSizeX:Y:] + 73
8 Heatbugs 0x00006e57 +[HeatbugsWorld createBegin:withModel:andSize:] + 55
9 Heatbugs 0x00003cf2 +[HeatbugsModel heatbugModelWithAZone:] + 338
10 Swarm 0x0001e726 +[CreateDrop_s create:] + 41
11 Heatbugs 0x00003221 -[HeatbugsGUI buildObjects] + 145
12 Swarm 0x000860e6 -[OpenStepSwarmController newSimulation:] + 211
13 Foundation 0x98c90964 -[NSThread main] + 45
14 Foundation 0x98c90914 __NSThread__main__ + 1499
15 libSystem.B.dylib 0x94800f39 _pthread_start + 345
16 libSystem.B.dylib 0x94800dbe thread_start + 34
)
1. Scott - based on what you said regarding zones - quite correctly - even a [HeatbugsWorld alloc] would crash - so I've removed all such methods and functions, but now I need to find a way of encapsulating swarm-framework implementation details from the user-app - mostly just to make sure that I can do it - and that I have a good understanding of how it all works.