drawRect() is not meant to be called directly; it's meant to be implemented by subclassers of NSView, and the drawing machinery is supposed to call it for you.
To force a redraw, call displayIfNeeded() or display(). Given you just changed the view, displayIfNeeded() should do the right thing.
Ali