Swift5踩坑记

作者: Wesin | 来源:发表于2019-04-09 14:55 被阅读433次

ps: 春光如梭,一年又已过去,xcode10丝滑的过度了4.2版本。以为苹果终于给力了。然而xcode10.2的升级,Swift5的更新让我明白了一个道理,xcode10.2才是那个点,xcode10说不定只是老板催的急,临时发的一个版。

闲话不多说,描述下这次遇到的问题吧。

HashValue 彻底不能用了

其实这个swift4.2就已经有了新的方案,只是前面一直还能用。swift5直接编译报错了。

下面就是替换方案的使用方法。

// swift 3
extension Point: Equatable{
    func ==(lhs: Testhash, rhs: Testhash) -> Bool {
        return lhs.hashValue == rhs.hashValue
    }
}
extension Point: Equatable {
    var hashValue: Int {
        get {
            return self.x + self.y * self.x
        }
    }
}

// swift 4.2
extension Point: Equatable {
    static func ==(lhs: Point, rhs: Point) -> Bool {
        // Ignore distanceFromOrigin for determining equality
        return lhs.x == rhs.x && lhs.y == rhs.y
    }
}
extension Point: Hashable {
    func hash(into hasher: inout Hasher) {
        // Ignore distanceFromOrigin for hashing
        hasher.combine(x)
        hasher.combine(y)
    }
}

大坑,release版本发布后TableView某些delegate无法触发生效

具体描述下场景, 当TableView所创建的类没有实现某些可以不实现的代理,比如didselect, heightforrow。然后这个类被子类继承,实现了didselect、heightforheader、heightforfooter的方法。在debug模式下,代码运行很正常,点击事件,高度都能正常显示。但是打包发布后,从testflight下载过来,就有可能存在点击,tableview行焦点色会变化,但是事件没法触发的问题。或者header和footer高度不对的问题。

这个问题的原因估计是编译优化做了修改导致的。

最无脑的解决方案是在父类把这几个方法都写一个空的实现,子类做函数重写。亲测有效。

高端解决办法,可能需要去修改一些编译选项吧,然而没测试过,有大佬搞过的也可以指导下。

此问题是Xcode10.2的锅,与swift版本无关。

相关文章

  • Swift5踩坑记

    ps: 春光如梭,一年又已过去,xcode10丝滑的过度了4.2版本。以为苹果终于给力了。然而xcode10.2的...

  • Android Material Design 踩坑记(2)

    Android Material Design 踩坑记(1) CoordinatorLayout Behav...

  • Deepin使用踩坑记

    1. 前言 很喜欢Deepin,奈何坑太多,不过不怕,踩过去~ 2. 踩坑记 2.1 Deepin重启后文件管理器...

  • SpringStreaming+Kafka

    摘自 :Spark踩坑记——Spark Streaming+Kafka [TOC] SpringStreaming...

  • 原生App植入React Native 踩坑记

    原生App植入React Native 踩坑记 为什么我踩坑了有一个需求要去可以在当前工程的feature/RN ...

  • [ANR Warning]onMeasure time too

    ConstraintLayout 踩坑记一次封装组合控件时的坑,我才用了集成 ConstraintLayout 来...

  • IdentityServer 部署踩坑记

    IdentityServer 部署踩坑记 Intro 周末终于部署了 IdentityServer 以及 Iden...

  • 踩坑记

    1、android自签名证书Glide加载不出图片 关于https中自签名证书的介绍以及OkHttp中解决自签名证...

  • 踩坑记

    6月初,看到广西龙脊梯田有个疏秧节,很是心动!我十几年前就去过龙脊,当时觉得整片的梯田又美又壮观,壮族风情浓厚,就...

  • 踩坑记

    该篇文章记录踩过的坑 uglifyjs-webpack-plugin压缩代码报punc (()错误网上查资料,说是...

网友评论

    本文标题:Swift5踩坑记

    本文链接:https://www.haomeiwen.com/subject/gqgbiqtx.html