我有一个完成处理程序的代码,在Xcode 6 beta 4中工作,不再适用于Xcode 6 beta 5.
dropsToRemove.bridgeToObjectiveC().makeObjectsPerformSelector("removeFromSuperview")
Run Code Online (Sandbox Code Playgroud)
全方法......
func animateRemovingDrops(dropsToRemove: [UIView]) {
println(__FUNCTION__)
UIView.animateWithDuration(1.0,
animations: {
for dropView in dropsToRemove {
let x = CGFloat(UInt(arc4random_uniform(UInt32(UInt(self.gameView.bounds.size.width) * 5)))) - self.gameView.bounds.size.width * 2
let y = self.gameView.bounds.size.height
dropView.center = CGPointMake(x, -y)
}}, completion: { finished in
dropsToRemove.bridgeToObjectiveC().makeObjectsPerformSelector("removeFromSuperview")
})
}
Run Code Online (Sandbox Code Playgroud)
错误是'[UIView]'没有名为'bridgeToObjectiveC'的成员
请注意,该方法中的CGFloat和Uint转换用于beta 4解决方法,我还没有更新该部分.这个问题包括在: 'CGFloat'不能转换为'UInt8'和其他CGFloat问题与Swift和Xcode 6 beta 4
我认为处理完成处理程序的解决方案可能是将数组视为NSArray,如下所述: 什么是makeObjectsPerformSelector的swift等价物?
(dropsToRemove as NSArray).makeObjectsPerformSelector("removeFromSuperview")
Run Code Online (Sandbox Code Playgroud)
但是,假设我的语法正确,只会导致另一个错误'makeObjectsPerformSelector'不可用:'performSelector'方法不可用
这是一个新的Swift错误,还是我在发行说明中缺少的东西?