Swift4.0的小改动

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 标识。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文地址:swift4.0 适配 一、前言 在我们的工程中处于swift和OC混编的状态,使用swift已经有一年...
    默默_David阅读 1,974评论 0 3
  • 一, Swift 版本 1, Swift Language ---> 4.0 2, 修改pod库 第三方库暂时使...
    fordring2008阅读 2,631评论 0 4
  • iOS开发中,我们需要根据用户需要去适配各种各样的版本,特别是苹果爸爸的每一次新版本发布,作为开发者的我们永远是最...
    青苹果园阅读 7,615评论 2 12
  • 初入江湖深似海.想写点东西时,脑子是满的,笔下却是空的;刚有的灵感时,发现别人都已经写了;准备趁个时事热点也想写篇...
    逸木林阅读 384评论 1 11
  • id列表 eg:["1","2"]//字符串拼接 声明 方法
    AAup阅读 200评论 0 0