Objective c exc_错误访问错误//

Objective c exc_错误访问错误//,objective-c,Objective C,我使用的是Xcode 4和ARC,当我试图在书中做这个练习时,我遇到了这个错误。线程1:程序接收到信号:“EXC_BAD_ACCESS”。与Rectangle*intersectingRect=[[Rectangle alloc]init]在同一行 #import <Foundation/Foundation.h> @interface XYPoint : NSObject @property float x, y; @end [self-intersect:myRect

我使用的是Xcode 4和ARC,当我试图在书中做这个练习时,我遇到了这个错误。
线程1:程序接收到信号:“EXC_BAD_ACCESS”。
Rectangle*intersectingRect=[[Rectangle alloc]init]在同一行矩形.m
中的
intersect
方法中的code>

#import <Foundation/Foundation.h>

@interface XYPoint : NSObject 
@property float x, y;

@end



[self-intersect:myRect]
调用不会导致无限递归吗?(调用函数本身时使用的参数与调用函数时使用的参数相同)。首先,您需要了解抛出EXC_BAD_访问的原因。通常是因为您试图访问已发布的内容。你可以认为intersectingRect可能是给你带来问题的那个,但很可能是myRect已经发布了。你是如何保留myRect的?哦,天哪,我用错了方法。我应该调用containsPoint方法。解决了这个错误。非常感谢。
#import "XYPoint.h"

@implementation XYPoint 
@synthesize x, y;

@end
#import "XYPoint.h"

@interface Rectangle : NSObject  
@property float width, height;

-(void) setOrigin: (XYPoint *) pt;
-(XYPoint *) origin;
-(BOOL) containsPoint: (XYPoint *) aPoint;
-(Rectangle *) intersect: (Rectangle *) myRect;

@end
#import "Rectangle.h"

@implementation Rectangle {
    XYPoint *origin;
}
@synthesize width, height;

-(void) setOrigin: (XYPoint *) pt {
    if (! origin) 
        origin = [[XYPoint alloc] init];

    origin.x = pt.x;
    origin.y = pt.y;

}

-(XYPoint *) origin {
    XYPoint *myOrigin = [[XYPoint alloc] init];

    myOrigin.x = origin.x;
    myOrigin.y = origin.y;

    return myOrigin;
}

-(BOOL) containsPoint:(XYPoint *)aPoint {
    if (origin.x + height >= aPoint.x && origin.y + width >= aPoint.y)
        return YES;
    else
        return NO;
}

-(Rectangle *) intersect:(Rectangle *)myRect {
    Rectangle *intersectingRect = [[Rectangle alloc] init];


    if ([self intersect: myRect]){
        intersectingRect.width = self.origin.x + self.width - myRect.origin.x;
        intersectingRect.height = myRect.origin.y + myRect.height - self.origin.y;

        intersectingRect.origin.x = myRect.origin.x;
        intersectingRect.origin.y = self.origin.y;
    }
    return intersectingRect;
}