isn't this almost exactly the same question you asked a week ago? It looks like 
you did 1/2 of what Graham told you then but didn't totally understand his 
answer. 

Same answer, you're setting path to a newly-created NSBezierPath you don't own 
and overwriting the one you alloc/init'ed earlier. So you're leaking the first 
one and the second one you don't own so it's being released causing the bad 
access error. 

this line by the way

        path = [ path init ];

is illegal, you can't init something twice. The second version happens to work 
(even apart from the illegal extra init) because it appends a path to the 
bezier which already exists, which you then aren't leaking. 

It might help to go read the creation/destruction of objects and memory 
management chapters again until it clicks. 


On 11-Mar-2010, at 9:38 PM, Billy Flatman wrote:

> Hi All,
> 
> I'm getting a 'EXC_BAD_ACCESS' error when calling the fill on a NSBezierPath.
> Below is an outline of my code.
> 
> 
> @interface Shape : NSObject {
>       NSBezierPath *path;
> }
> - (void)paint;
> @end
> 
> @implementation Shape
> - (void) paint {
>       [[NSColor redColor] set];
>       [path fill];
> }
> @end
> 
> @interface Square : Shape <Moveable> {}
> - (Square *) initSquare;
> - (void)initBezierPath;
> @end
> 
> @implementation Square
> - (Square *) initSquare {
>       self = [super init];
>       if (self) {
>               path = [[NSBezierPath alloc] init];             
>               [self initBezierPath];
>       }
>       return self;
> }
> - (void) initBezierPath {
>       path = [NSBezierPath bezierPathWithRoundedRect:NSMakeRect(0,0,10,10)
>                                      xRadius:5
>                                      yRadius:5];
>       [path closePath];
> }
> @end
> 
> it works if I change initBezierPath content to:
> 
> path = [path init];
> [path appendBezierPathWithRoundedRect:r
>                             xRadius:5
>                             yRadius:5];
> [path closePath]; 
> 
> From the main body I initialise a Square and call it's paint method in the 
> drawRect method of an NSView.
> 
> Any help would be greatly appreciated.
> 
> Billy Flatman
> b.flat...@googlemail.com
> 
> 
> _______________________________________________
> 
> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
> 
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
> 
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/cocoa-dev/rols%40rols.org
> 
> This email sent to r...@rols.org

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to