因此,首先,您需要获取对CutoutView
您创建的特定实例的引用,以便您可以告诉该特定实例重新显示自身。
您可以通过以下几种方式执行此操作:
- 如果您仍有参考
window
,只需调用[[window contentView] setNeedsDisplay:YES]
.
- 使 newContentView 成为特定类的属性,以便您的其他类可以访问它...从根本上讲,您必须了解类的实际工作方式才能回答您的问题,因为这不是技术问题,而是概念性的一。
所以第一个问题是你认为你的CutoutView
代表一个对象,正如你所说的,“已经被初始化了”。这是错误的思考方式。CutoutView
是一个类,而不是一个实例。
你可能已经听说过关于类和蓝图的比喻,所以我将使用稍微不同的东西。CutoutView
是丰田普锐斯——不是汽车,而是模型,有设计蓝图和制造过程等等。路上有成千上万的普锐斯,同样的方式可能有成千上万的CutoutView
.
您的问题似乎暗示您认为CutoutView
这是一辆汽车,是一辆普锐斯坐在车道上的物理表现;但它基本上不是。
一个类是一个模型,丰田普锐斯的设计/品牌,甚至是尼米兹级航空母舰,它描述了一种船(其中有 10 艘)。这些课程本身并没有多大意义。
对象或类的实例是您的程序使用的实际事物。这就是代码中的newContentView。您只是比喻性地告诉了它:(我希望这是有道理的)
NimitzClassCarrier *USSGeorgeHWBush = [[NimitzClassCarrier constructBoat] prepareForLaunch];
^ 乔治·H·W·布什号航空母舰于 2009 年完工,并于当年年初alloc
被委托、编辑并交付给海军。init
^尼米兹号航空母舰是尼米兹级航母的另一个例子。
您已经创建了该类的一个实例,CutoutView
因此您可以实际使用它。您可以创建同一类的多个实例/对象;毕竟有 10 艘尼米兹级航母。
因此,
你不能通过打电话告诉 USS George HW Bush 发射它的飞机
NimitzClassCarrier *aCarrier = [[NimitzCarrierClass construct] prepareForLaunch];
[aCarrier launchPlanes];
考虑一下。你所做的只是花费数百万建造另一艘你称为“aCarrier”(一个不太适合航海的名字)的航母,并告诉它发射它的飞机。
相反,您想要做的是实际获得对乔治·H·W·布什号航空母舰本身的参考,以告诉它发射飞机。所以现在让我们回到你的CutoutView
. 您创建了一个实例CutoutView
并将其发送到您的窗口进行显示。然后,您基本上通过放开引用来切断您与该实例之间的直接无线电链接(因为我假设您再次与 NewContentView 无关。
CutoutView
幸运的是,该窗口仍然与您创建的实例有直接的无线电通信链接。因此,我建议的第一个选项是 call [[window contentView] setNeedsDisplay:YES]
,它告诉您的特定实例获取NSWindow
它contentView
恰好是您要显示的实例。CutoutView
毕竟,你可以做你想做的事情的方法是无穷无尽的。您可以保持与您的航空母舰的直接无线电通信链接,并将该通信方式提供给您希望能够发送航空母舰消息的其他 NSView 实例。您可以切断与 的所有直接通信contentView
并让窗口处理这一切,告诉 NSView 的另一个实例向窗口询问无线电线路。
[顺便说一句,你到底是怎么和航空母舰沟通的?我不认为它是无线电......在Objective-C中它有一个指向载体/对象的内存地址的指针,但船完全是另一个世界。]
或者,如果按照上面rdelmar
的评论方式询问,instance
您希望能够与 contentView 通信的 NSView 实际上是 contentView 的子视图......好吧,这样想吧。第 15 艘救生艇希望能够告诉乔治·H·W·布什号航空母舰发射它的飞机。如何?[[self parentBoat] launchPlanes]
. 这转化为[[self superview (a.k.a. parentNSView)] setDisplayNeeded:YES]
.
另请参阅@Dmorneault 的回答,了解您可以与您刚刚发送到百慕大三角地区的受人尊敬的航空母舰建立无线电通信的其他方式。
问题是,构建一个新的contentView/boat
并不能解决问题,这就是你想要做的,这就是你遇到的问题。
我认为我解释得不是很好,如果这对您来说不是新事物,我深表歉意,但我认为您的问题表明对课程的运作方式存在误解。我对航空母舰也一无所知,但这是我在维基百科上遇到的第一件事。
有用的概念资源: