ps: 春光如梭慈缔,一年又已過去减途,xcode10絲滑的過度了4.2版本检吆。以為蘋果終于給力了舒萎。然而xcode10.2的升級,Swift5的更新讓我明白了一個道理蹭沛,xcode10.2才是那個點臂寝,xcode10說不定只是老板催的急,臨時發(fā)的一個版摊灭。
閑話不多說咆贬,描述下這次遇到的問題吧。
HashValue 徹底不能用了
其實這個swift4.2就已經(jīng)有了新的方案帚呼,只是前面一直還能用掏缎。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版本發(fā)布后TableView某些delegate無法觸發(fā)生效
具體描述下場景, 當(dāng)TableView所創(chuàng)建的類沒有實現(xiàn)某些可以不實現(xiàn)的代理眷蜈,比如didselect, heightforrow沈自。然后這個類被子類繼承酌儒,實現(xiàn)了didselect、heightforheader枯途、heightforfooter的方法忌怎。在debug模式下,代碼運行很正常柔袁,點擊事件呆躲,高度都能正常顯示异逐。但是打包發(fā)布后捶索,從testflight下載過來,就有可能存在點擊灰瞻,tableview行焦點色會變化腥例,但是事件沒法觸發(fā)的問題辅甥。或者header和footer高度不對的問題燎竖。
這個問題的原因估計是編譯優(yōu)化做了修改導(dǎo)致的璃弄。
最無腦的解決方案是在父類把這幾個方法都寫一個空的實現(xiàn),子類做函數(shù)重寫构回。親測有效夏块。
高端解決辦法,可能需要去修改一些編譯選項吧纤掸,然而沒測試過脐供,有大佬搞過的也可以指導(dǎo)下。
此問題是Xcode10.2的鍋借跪,與swift版本無關(guān)政己。