-
@objc
OC 是基于运行时,遵循了 KVC 和动态派发,而 Swift 为了追求性能,在编译时就已经确定,而不需要在运行时的,在 Swift 类型文件中,为了解决这个问题,需要暴露给 OC 使用的任何地方(类,属性,方法等)的生命前面加上 @objc 修饰符
如果用 Swift 写的 class 是继承 NSObject 的话, Swift 会默认自动为所有非 private 的类和成员加上@objc
在Swift中,我们在给button添加点击事件时,对应的点击事件的触发方法就需要用@objc来修饰
-
dynamic
如果需要和 OC 里动态调用相同的运行特性的话,需要使用的修饰符是 dynamic
在Swift中,要是想KVO来监听属性的话,该属性必须用@objc和dynamic来修饰
参考文章:@objc 和 dynamic
网友评论