如何指定在objective-c中使用哪个NSView?

如何指定在objective-c中使用哪个NSView?,objective-c,macos,cocoa,nsview,Objective C,Macos,Cocoa,Nsview,我发现了这个在objective-c中绘制矩形的示例 NSRect r = NSMakeRect(10, 10, 50, 60); NSBezierPath *bp = [NSBezierPath bezierPathWithRect:r]; NSColor *color = [NSColor blueColor]; [color set]; [bp stroke]; 但是,我应该在哪里指定代码中使用哪个NSView 例如,如果我有两个NSView对象,并且我运行了此代码,我如何指定在哪个对象

我发现了这个在objective-c中绘制矩形的示例

NSRect r = NSMakeRect(10, 10, 50, 60);
NSBezierPath *bp = [NSBezierPath bezierPathWithRect:r];
NSColor *color = [NSColor blueColor];
[color set];
[bp stroke];
但是,我应该在哪里指定代码中使用哪个NSView


例如,如果我有两个NSView对象,并且我运行了此代码,我如何指定在哪个对象上绘制?

子类
NSView
,将您的代码添加到子类的
drawRect:
方法中,并用类的实例替换相应的
NSView

您不在
NSView
上运行此代码,而是在
NSView
子类对
-drawRect:
方法的重写中运行

您需要创建自己的
NSView
子类,然后在该子类中重写
-drawRect:
,并将此代码放在那里:

@interface CustomView : NSView
@end

@implementation CustomView

- (void)drawRect:(NSRect)dirtyRect
{
    NSRect r = NSMakeRect(10, 10, 50, 60);
    NSBezierPath *bp = [NSBezierPath bezierPathWithRect:r];
    NSColor *color = [NSColor blueColor];
    [color set];
    [bp stroke];
}

@end
最后,您当然必须实例化
CustomView
的一个实例,并将其添加到视图层次结构中,就像您通常对常规
NSView
所做的那样