关键字

  • @objc

OC 是基于运行时,遵循了 KVC 和动态派发,而 Swift 为了追求性能,在编译时就已经确定,而不需要在运行时才确定。在 Swift 类型文件中,为了解决这个问题,需要暴露给 OC 使用的任何地方(类,属性,方法等)的生命前面加上 @objc 修饰符
如果用 Swift 写的 class 是继承 NSObject 的话, Swift 会默认自动为所有非 private 的类和成员加上@objc,但在swift4以后,系统就不会自动添加@objc了

在Swift中,我们在给button添加点击事件时,对应的点击事件的触发方法就需要用@objc来修饰

  • @objcMembers

如果在类前加上 @objcMembers,那么它、它的子类、扩展里的方法都会隐式的加上 @objc

  • dynamic

如果需要和 OC 里动态调用相同的运行特性的话,需要使用的修饰符是 dynamic

在Swift中,要是想KVO来监听属性的话,该属性必须用@objc和dynamic来修饰

  • @discardableResult

有时候,我们不需要获取方法的返回值,但是不拿返回值xCode会提示一个警告,使用这个关键字修饰方法,可以避免这个警告

  • 访问权限关键字

    open > public > internal > fileprivate > private

参考文章:@objc 和 dynamic
Swift - Swift4新特性介绍3(Substring、swap、@objc)

你可能感兴趣的:(关键字)