在Swift中没有调用iOS Framework Delegate和IBAction

时间:2016-01-12 14:03:52

标签: ios objective-c swift delegates objective-c-framework

我在Objective-C中创建了一个框架。 我在Objective-C项目中一切正常。 但是当我将我的框架与Swift项目集成时,它表现得很奇怪。

My Swift Project:

  • 只有一个ViewController和一个连接了IBAction的按钮。

现在:

  • 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()
}

由于

1 个答案:

答案 0 :(得分:1)

我发现解决方案非常简单,

刚刚将我的代理人从weak引用更改为strong,就是这样。

可能问题是,当一个委托方法被调用时,委托对象变为零,因为它是weak引用。