我有一个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的引用,我只是不知道如何。
感谢任何建议。
答案 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
时,它导致它为空。
谢谢!