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
}
}
그러나, 나는 비 클래스 형에 약한 참조를 정의 할 수 없습니다 :
하지만 내 코드는 순환 참조로 이어질 것, 내가 약한 참조를 정의해야합니다 것 같다. 내가 무엇을 할 수 있을지? 이것을하는 것이 합법적입니까?
가능한 중복 [스위프트의 방법으로 자기가 약합니다 ... 항상 안전 ] (http://stackoverflow.com/questions/25613783/make-self-weak-in-methods-in-swift) – user102008