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