只在Swift中的对象的生命周期中调用一次方法
假设我们重写scrollViewDidScroll
方法,并且只有第一次滚动,我们想doSomething()
一个微不足道的方法是实现这个是具有一个实例级布尔variables和切换/检查它。
func scrollViewDidScroll(scrollView: UIScrollView!) { if(!scrolled) { scrolled = true; doSomething(); } }
我想要一个更好的解决scheme,不会引入scrolled
的布尔variables。 与dispatch_once
类似,但是在对象的整个生命周期中,而不是整个过程。
这个模式有没有名字?
与dispatch_once类似,但是在对象的整个生命周期中,而不是整个过程
不幸的是, dispatch_once
在实例级别是不安全的。 在Objective-C中使用它的人是错误的。 这就是为什么dispatch_once
在Swift中不可用。
您的if !scrolled
模式实际上是正确的实现(除了使用括号,分号和其他非Swifty的东西)。 这就是所谓的国旗 。
既然你只需要为每个类的实例完成一次,那么使用一个实例variables就是正确的解决scheme。 而且,正如你所说,这是一个微不足道的方法。
如果这是正确和微不足道的,为什么你认为有一个更好的办法?
- 在Swift 1.2的init方法中将自身作为parameter passing
- Swift像闭包一样使用select器参数
- NSFastEnumeration在Swift中
- 如何defaults.removeObjectForKey(“”)适当的迅速
- 我应该在混合的Objective-C / Swift项目中使用Realm Objective-C还是Realm Swift?
- Firebase queryEqual不起作用
- viewForAnnotation混淆和反复定制pinColor
- 在执行代码之前等待Swiftanimation完成
- 使用iOS Storyboarddynamic调整UILabel的高度