ios - 在我的 ViewController 中,如何将函数作为参数传递并保留 [weak self]?

标签 ios swift

我最初的方法。一切正常。:

func fetchInitialItems(num: Int){
    firebaseRef?.observeSingleEventOfType(.Value, withBlock: { [weak self] snapshot in
        if self != nil {
            //perform calculations
        }
    })
}

我想将闭包移动到它自己的另一个方法:

func fetchBlock(snapshot: FDataSnapshot!){ 
    //perform calculations
}

func fetchInitialItems(num: Int){
    firebaseRef?.observeSingleEventOfType(.Value, withBlock: withBlock: self.fetchBlock)    
}

这是正确的方法吗?如何制作第二个解决方案[weak self]?我看不出有什么办法可以做到这一点。

最佳答案

这个怎么样:

firebaseRef?.observeSingleEventOfType(.Value, withBlock: { [weak self] snapshot in 
    self?.initialFetchBlock(snapshot)
})  

我不确定我们是否可以在闭包之外使用捕获列表。

关于ios - 在我的 ViewController 中,如何将函数作为参数传递并保留 [weak self]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36762370/

相关文章:

ios - 注册和出列特定类型的 UITableViewCell

swift - 使用未解析的标识符 'RealmOptional'

iphone - 仅在 shouldChangeCharactersInRange 返回 yes 后调用方法

ios - 选择模拟器或 iOS 设备在 Xcode 上测试未出现

ios - 为 iOS(和 Airplay)上不受支持的硬件加速容器设计一个库

ios - 文档选择器 Controller 的多项选择

ios - 获取 Nib 名称/ Nib 到底是什么?

ios - 尝试使用 UISlider 更改 Swift 音频应用程序中的速率时出错

ios - 应用商店连接上的事件选项卡消失了

ios - Socket.io swift 客户端自动多次重新连接