0

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

我的斯威夫特项目:

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

现在:

  • viewDidAppear我已经初始化了我的框架并设置delegateself.
  • 一旦我调用了初始化成功的委托,我就会调用另一个方法。
  • 但奇怪的行为是一切都停止了,甚至IBAction不工作。

但是当我尝试在 viewDidAppear 中添加 NSTimer 重复方法时,一切都恢复正常了。

我知道这是一个非常奇怪的问题,但可能有人遇到过这个问题。

我的代码:

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() {

}

IBA行动,

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

谢谢

4

1 回答 1

2

我找到了一个非常简单的解决方案,

只是将我的代表从weak引用更改为strong,就是这样。

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

于 2016-01-13T07:55:46.663 回答