我在Objective-C中创建了一个框架。 我在Objective-C项目中一切正常。 但是当我将我的框架与Swift项目集成时,它表现得很奇怪。
My Swift Project:
现在:
viewDidAppear
我初始化了我的框架并将delegate
设置为self
。IBAction
无效。但是当我尝试在viewDidAppear中添加NSTimer repeat方法时,一切正常。
我知道这是一个非常奇怪的问题,但可能有人遇到过这个问题。
我的代码:
override func viewDidAppear(animated: Bool) {
MySDK.sharedInstance().initWithAppKey("123")
MySDK.sharedInstance().delegate = self
NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "timer", userInfo: nil, repeats: true)
}
委派电话,
//This is getting called
func initSdkSuccessful() {
MySDK.sharedInstance().doStuff()
}
//This is not getting called
func stuffDone() {
}
IBActions,
//This is getting called if I do not set delegate,but if I set delegate to self then It doesn't.
@IBAction func btnTapped(sender: UIButton) {
MySDK.sharedInstance().doAnotherStuff()
}
由于
答案 0 :(得分:1)
我发现解决方案非常简单,
刚刚将我的代理人从weak
引用更改为strong
,就是这样。
可能问题是,当一个委托方法被调用时,委托对象变为零,因为它是weak
引用。