斯威夫特模态自我成为无

时间:2015-07-14 20:06:04

标签: ios swift uiviewcontroller modal-dialog

我有一个UIViewController,当按下按钮时,我从segue打开另一个View。当它打开时,一切都很好,所有功能都有效。但是,如果我关闭模态然后尝试重新打开它, self 就是零。

这是我用来打开模态的代码:

self.performSegueWithIdentifier("Search", sender: self)

我的模态有一个segue定义为:

目前模态

全屏

然后我在模态中有一个关闭按钮,执行以下操作:

dismissViewControllerAnimated(true, completion: nil)

最后,当我尝试再次使用模块的UIViewController中的“搜索”segue self 打开模态 nil

因此,当我尝试使用它时,我收到此消息:

fatal error: unexpectedly found nil while unwrapping an Optional value

我假设我在某处保留了对UIViewController的引用,我只是不知道如何。

感谢任何建议。

1 个答案:

答案 0 :(得分:0)

好,

所以事实证明我省略的代码导致了这个问题。我道歉,我只是认为它不会由它引起,因为它在所有其他用例中都有效。

我正在使用Socket.IO与NodeJS服务器实时通信。

在socket.on中:

var user = User.sharedInstance

user.socket!.on("search") {[weak self]data, ack in

        var json = JSON(data!)

        self.songs.removeAll() // <- Caused the error.

...

事实证明,[weak self]如果之前已经设置了self,则会导致自己为nil。所以我第一次打开模态时,user.socket!.on('search') {[weak self] data, ack in ...工作得很好,虽然第二次,当我再次在套接字调用中引用self时,它导致它为空。

谢谢!