我有一个名为 的类RunningInteger
,它——在不同的线程上(以避免阻塞主线程)——循环一个从 1 到 60 的整数 ivar,它们之间有 1 秒。因此,整个循环大约需要一分钟。ivar 通过方法或只读属性提供给外部世界。
我有一个自定义NSView
子类,它有 60 种不同的模式,可以在其中显示自己。
现在,这就是我想要完成的:
我在界面上有一个按钮。单击时,即在其操作方法中,
RunningInteger
应创建一个新的实例,并且视图应根据该实例的 ivar 绘制自身。然而——这就是问题——如果再次单击按钮,动画应该相应地重置并重新开始。这应该是线程安全的,不应该有内存泄漏,也不应该有线程堆积。
关于如何做到这一点的任何想法?
有两个特定的(可能还有许多其他的)问题与此密切相关:
显然,让线程不断堆积并不是一个好的设计,即使我们知道它们会在 60 秒后消失。毕竟,如果 60 秒是 1 小时呢?(这是一种可能。)
我们如何确保只有最近创建的 get实例
RunningInteger
才能更新视图的显示 (setNeedsDisplay:YES)?