为什么 Selector 存在于 swift
Why does Selector exist in swift
为什么Apple选择继续使用Selector
类型,Swift完全可以发送功能
所以不要这样做:
UILongPressGestureRecognizer(target: self, action: "showSomething:")
一个人可以做到:
UILongPressGestureRecognizer(showSomething)
如果您有代表,这也适用:
UILongPressGestureRecognizer(delegate.showSomething)
Apple 选择保留 String 的可悲实现以指向函数,而不是最大限度地使用 Swift 的功能,这是有原因的吗?
编辑:showSomething
的示例实现
func showSomething(sender: UIGestureRecognizer) {
println("showSomething triggered")
}
这是遗留兼容性问题。
您用作示例的 API 是在 Objective-C 中编写的,现在仍然如此。 Apple 完全有可能利用 Swift 的功能来生成更精简的 APIs,但它需要在 Swift 中本地重写它们,这对于大量数组构成 Cocoa & Cocoa Touch 的现有框架的数量将花费大量时间和精力。
Apple 可能会向 Objective-C 添加功能,通过利用更新的 Swift 功能提高语言之间的兼容性,同时避免重写框架的需要。例如,在 Xcode 6.3 beta 中,他们将 "nullability" 的概念添加到 Objective-C(请参阅发行说明),这会影响 Objective-C API 的可选性s 在 Swift 代码中使用时。 Swift 可以改进现有 API 的另一个示例是使用默认参数...也许这也可以在 Objective-C API 中以某种方式描述?
如果 Apple 将来发布非 Objective-C(原生 Swift)框架,我不会感到惊讶,但我们离那还有一段距离。
为什么Apple选择继续使用Selector
类型,Swift完全可以发送功能
所以不要这样做:
UILongPressGestureRecognizer(target: self, action: "showSomething:")
一个人可以做到:
UILongPressGestureRecognizer(showSomething)
如果您有代表,这也适用:
UILongPressGestureRecognizer(delegate.showSomething)
Apple 选择保留 String 的可悲实现以指向函数,而不是最大限度地使用 Swift 的功能,这是有原因的吗?
编辑:showSomething
func showSomething(sender: UIGestureRecognizer) {
println("showSomething triggered")
}
这是遗留兼容性问题。
您用作示例的 API 是在 Objective-C 中编写的,现在仍然如此。 Apple 完全有可能利用 Swift 的功能来生成更精简的 APIs,但它需要在 Swift 中本地重写它们,这对于大量数组构成 Cocoa & Cocoa Touch 的现有框架的数量将花费大量时间和精力。
Apple 可能会向 Objective-C 添加功能,通过利用更新的 Swift 功能提高语言之间的兼容性,同时避免重写框架的需要。例如,在 Xcode 6.3 beta 中,他们将 "nullability" 的概念添加到 Objective-C(请参阅发行说明),这会影响 Objective-C API 的可选性s 在 Swift 代码中使用时。 Swift 可以改进现有 API 的另一个示例是使用默认参数...也许这也可以在 Objective-C API 中以某种方式描述?
如果 Apple 将来发布非 Objective-C(原生 Swift)框架,我不会感到惊讶,但我们离那还有一段距离。