我有一个案例需要修改NSView的所有实例,通过向init()添加几行代码来解决这些问题,但是如何在Swift中为所有子类干净地完成?
我想到的情况:
我通过扩展程序
这样可以正常运行,但在通过图层的addAnimation:forKey:方法注册为可动画之前,它不可动画。
所以我真正需要做的就是确保每次调用NSView或子类时都会调用addAnimation:forKey:
我考虑过的事情:
以某种方式在扩展中执行此操作。问题:扩展无法覆盖函数,并且无需覆盖init()或类似viewDidAppear()之类的代码,每次都必须手动调用代码(例如,使用方便的初始化程序)。
子类NSView并添加代码。问题:NSButton,Slider和其他所有人都没有继承代码,我必须将它们全部子类化。
方法调整。这应该是可能的,因为obj-c方法是可以流动的,NSView继承自NSObject。
到目前为止,只有调查似乎可行,但我不愿意这样做,因为它依赖于保持友好的API,而且我不知道这将是多长时间案例。
还有其他办法吗?