如何在swift中使用内联方法分配回调处理程序?

时间:2019-05-25 01:34:30

标签: objective-c swift

这是我在Objective-C中实现内联回调分配的方式:

self.beforeAdjustViews = ^ (UIView* btnView)
{
    // do something
};

如何在Swift 5中实现相同的功能?

2 个答案:

答案 0 :(得分:2)

您可以直接分配

self.beforeAdjustViews = { (button) in 
    // Write Some Code
}

或为此调用创建一个引用变量-通常,当您拥有很多属性或试图使代码简单美观时,

let beforAdjustViewsCallBack: (btnView: UIView) -> Void = { button in 
    // Write Some Code
}

还请记住,保留周期的规则相同,因此,如果您不想在块内保留self的强引用,则需要使用{{1} }或[weak self](根据您的用例)。

答案 1 :(得分:1)

您可以尝试

self.beforeAdjustViews = { [weak self] (btnView) in 
 ///
}