【发布时间】:2014-11-19 10:48:52
【问题描述】:
在HMSegmentedControl 中,我想将segmentedControl.indexChangeBlock 设置为一个实例方法来处理该操作。
官方的例子是:https://github.com/HeshamMegid/HMSegmentedControl/blob/master/HMSegmentedControlExample/HMSegmentedControlExample/ViewController.m(第 63 ~ 68 行),但那是 Objective-C。
在 Swift 中,函数是一等公民。所以我想为这个块属性设置一个实例方法。
但是我的代码会导致循环引用,看来我应该定义一个弱引用:
class ExampleVC: UIViewController {
var segmentedControlIndex: Int = 0
override func viewDidLoad() {
let segmentedControl3 = HMSegmentedControl(sectionImages: ... , sectionSelectedImages: ... )
segmentedControl3.frame = ...
segmentedControl3.indexChangeBlock = someInstanceMethod
}
func someInstanceMethod(index: Int) {
segmentedControlIndex = index
}
}
但是,我不能定义对非类类型的弱引用。我能做些什么?这样做合法吗?
【问题讨论】: