Swift4.0的小改动

2017-11-28  本文已影响87人  ibiaoma

1、字体方面的一些重命名

    NSFontAttributeName --- .font 
    //或者NSAttributedStringKey.font

    NSForegroundColorAttributeName --- .foregroundColor
    //NSAttributedStringKey.foregroundColor

    NSStrikethroughStyleAttributeName --- .strikethroughStyle
    //NSAttributedStringKey.strikethroughStyle

    //字符串类型的,添加rawValue
    NSAttributedStringKey.font.rawValue

    //大部分类似以下,涉及富文本的方法均已改为了NSAttributedStringKey类型
    addAttributes(_ attrs: [NSAttributedStringKey : Any] = [:], range: NSRange)

2、Swift4.0中不再允许复写扩展中的方法

    父类
    extension BaseViewController{
        @objc func setupUI()  {
            view.backgroundColor = UIColor.orange
        }    
    }

    子类
    extension HomeViewController{
        override func setupUI()  {
            super.setupUI()
        }
    }

在父类的方法名前加@objc,否则报错 Declarations in extensions cannot override yet

3、 @objcMembers

     在Swift 4中继承 NSObject 的 swift class 不再默认全部 bridge 到 OC,

    如果我们想要使用的话我们就需要在    class前面加上@objcMembers 这么一个关键字

    引用: 在 swift 3 中除了手动添加 @objc 声明函数支持 OC 调用还有另外一种方式:继承 NSObject。

    class 继承了 NSObject 后,编译器就会默认给这个类中的所有函数都标记为 @objc ,支持 OC 调用。

    苹果在Swift 4 中苹果修改了自动添加 @objc 的逻辑:一个继承 NSObject 的 swift 类不再默认给所有函数添加 @objc。

    只在实现 OC 接口和重写 OC 方法时才自动给函数添加 @objc 标识。
上一篇下一篇

猜你喜欢

热点阅读