在Objective-C,我们可以初始化CADisplayLink与代理模式打破有力的参考:如何与目标和CADisplayLink实例之间的弱引用设置CADisplayLink斯威夫特
WeakProxy *weakProxy = [WeakProxy weakProxyForObject:self];
self.displayLink = [CADisplayLink displayLinkWithTarget:weakProxy selector:@selector(displayDidRefresh:)];
然后,就无效的DisplayLink在dealloc
:
- (void)dealloc
{
[_displayLink invalidate];
}
但是,NSProxy似乎不能在斯威夫特继承:https://bugs.swift.org/browse/SR-1715
我试着写这样的:
weak var weakSelf = self
displayLink = CADisplayLink(target: weakSelf!, selector: #selector(displayDidRefresh(dpLink:)))
它没有工作。
我想知道是否有任何方法可以在Objective-C中实现这一点。