我试图找出objective-c中的两个矩形之间是否发生碰撞。我认为实现这一点的一种方法是检测最接近 0,0 点的矩形,然后做剩下的工作。
我写了一个函数,它接受两个矩形对象作为参数,并进行数学计算来计算面积、到原点的距离等......
因此,假设 rect1 位于 (100,200) 且 rect1 的宽度为 100 高度 200,rect2 位于 150,150 且 rect2 的宽度为 100 高度 200,这是由函数计算得足够好。
如果我切换 rec1 和 rect2 属性,那么 rect1 将是 150,150,而 rect2 将是 100,200。并调用以下函数
-(Rectangle*)intersect:(Rectangle*)rectA:(Rectangle*)rectB{
//check closest rectangle to 0,0 and switch rectangles
if (rectA.origin.x>rectB.origin.x) {
Rectangle *temporary = [[Rectangle alloc] init];
temporary=rectA;
rectA=rectB;
rectB=temporary;
[temporary release];
}
float rectAX = rectA.origin.x;
float rectAY = rectA.origin.y;
float rectBX = rectB.origin.x;
float rectBY = rectB.origin.y;
当我启用保护 malloc 和僵尸时,出现以下错误: -[Rectangle origin]: message sent to deallocated instance 0x100acffd0
一旦rectA.origin.x;
被调用,我就会得到错误。
那么 rectA 或 rectB 是如何被释放的呢?切换具有一堆属性的两个对象的正确方法是什么?