Objective c 方法从不同的类中抽取两次

Objective c 方法从不同的类中抽取两次,objective-c,xcode,cocoa,Objective C,Xcode,Cocoa,我在AppDelegate中创建了一个窗口,然后在使用newContentView执行任何操作(例如从CutoutView获取方法)时,我将内容视图设置为NSView子类“CutoutView”,这些操作非常有效 // Configure contentView in AppDelegate newContentView = [[CutoutView alloc]initWithFrame:window.frame]; [window setContentView:newCont

我在AppDelegate中创建了一个窗口,然后在使用newContentView执行任何操作(例如从CutoutView获取方法)时,我将内容视图设置为NSView子类“CutoutView”,这些操作非常有效

// Configure contentView in AppDelegate
    newContentView = [[CutoutView alloc]initWithFrame:window.frame];
    [window setContentView:newContentView];
现在我有了另一个名为MoveFilter的NSView子类,我希望能够从CutoutView中调用方法。问题是为了做到这一点,我必须再次alloc和init CutoutView方法,当我这样做时,可以调用这些方法,但什么都不显示,因为CutoutView之前已经alloc和init了

 // in MoveFilter
 cutOutView = [[CutoutView alloc]init];
 [cutOutView someMethod];

我需要向MoveFilter添加什么,或者我可以看些什么来帮助我调用方法,这些方法将像newContentView一样显示在哪里?对不起,我是新手,谢谢

从应用程序代理获取现有的
剪切视图

CutoutView * cv = [[NSApp delegate] newContentView];
(假设您对此有一个属性——看起来您正在将其放入ivar中。)

或者从窗口:

// in MoveFilter
CutoutView * cv = [[self window] contentView];
(假设
MoveFilter
CutoutView
位于同一窗口中。)


或者,如果这两个假设都不成立,您可以将这两个过程结合起来,获得应用程序代理窗口的内容视图。我将把它留给您作为练习。

我为newContentView创建了一个属性,并使用了您的第一个示例
CutoutView*cv=[[NSApp delegate]newContentView]它们在不同的窗口中,因此在下一行中,我尝试获取内容视图,如so
cv=[[self window]contentView]但我遇到了一个错误,我接近了吗?
[[[[NSApp delegate]window]contentView]
是这样的吗<代码>CutoutView*cv=[[NSApp委托]newContentview]
cv=[[NSApp委托]窗口]内容视图]它没有给出错误,但我无法调用方法
[cv someMethod]
感谢您的耐心这些方法在建议中得到认可,但当我
[cv someMethod]
时,什么都没有发生