In HMSegmentedControl
, vorrei impostare lo segmentedControl.indexChangeBlock
su un metodo di istanza per gestire l'azione. L'esempio ufficiale è: https://github.com/HeshamMegid/HMSegmentedControl/blob/master/HMSegmentedControlExample/HMSegmentedControlExample/ViewController.m (riga 63 ~ 68), ma questo è Objective-C.Come impostare un riferimento debole a una chiusura/funzione in Swift?
In Swift, le funzioni sono cittadini di prima classe. Quindi voglio impostare un metodo di istanza per questa proprietà di blocco.
Ma il mio codice porterebbe a un riferimento circolare, sembra che dovrei definire un riferimento debole:
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
}
}
Tuttavia, non posso definire un debole riferimento ad un tipo non-class. Cosa posso fare? è legale fare questo?
possibile duplicato del [Fare sé debole nei metodi a Swift ] (http://stackoverflow.com/questions/25613783/make-self-weak-in-methods-in-swift) – user102008