@abitofcode, thanks for the help, I really should have thought to check to make sure dealloc was being called! I guess I just figured it was because I was getting the errors in the dealloc method when I tried to release some of those other objects. But anyway, it's working now, I wasn't actually calling release on the ropes, as I guess I thought they would be released when removed from my array!
But I still don't understand what's going on with, for example, this bit:
for(int i=0;i<numPoints;i++) {
CGPoint tmpVector = ccpAdd(pointA, ccpMult(ccpNormalize(diffVector),multiplier*i*(1-antiSagHack)));
VPoint *tmpPoint = [[VPoint alloc] init];
[tmpPoint setPos:tmpVector.x y:tmpVector.y];
[vPoints addObject:tmpPoint];
}
Why does tmpPoint not need releasing after calling alloc and init. Or is it because its a subclass of NSObject, and this is returning an autorelease object?
Thanks again for the help though!