Think of NSBezierPath
as a wrapper around CGPath
which makes your life easier if you're working with views (NSView
) instead of directly with the graphics context (CGContext
). NSBezierPath
allows you to specify the path and its drawing attributes (colours, line endings, etc) in one instance whereas if you were to use CGPath
you would need to create and add the path, colours, line endings, etc separately and set the values onto the context (which is what NSBezierPath
is doing for you).
So, they are similar but NSBezierPath
is optimised for use when you are drawing into a view and CGPath
offers all of the raw power of the graphics context.