将初始化时间代码添加到现有类而无需子类化

时间:2016-03-04 16:34:40

标签: ios swift macos protocols

我有一个案例需要修改NSView的所有实例,通过向init()添加几行代码来解决这些问题,但是如何在Swift中为所有子类干净地完成?

我想到的情况:

  • 我通过扩展程序

  • 向NSView添加自定义属性
  • 这样可以正常运行,但在通过图层的addAnimation:forKey:方法注册为可动画之前,它不可动画。

所以我真正需要做的就是确保每次调用NSView或子类时都会调用addAnimation:forKey:

我考虑过的事情:

  • 以某种方式在扩展中执行此操作。问题:扩展无法覆盖函数,并且无需覆盖init()或类似viewDidAppear()之类的代码,每次都必须手动调用代码(例如,使用方便的初始化程序)。

  • 子类NSView并添加代码。问题:NSButton,Slider和其他所有人都没有继承代码,我必须将它们全部子类化。

  • 方法调整。这应该是可能的,因为obj-c方法是可以流动的,NSView继承自NSObject。

到目前为止,只有调查似乎可行,但我不愿意这样做,因为它依赖于保持友好的API,而且我不知道这将是多长时间案例。

还有其他办法吗?

0 个答案:

没有答案
相关问题