Ошибки с пользовательским классом UIButton в Swift 4.2.Что нового в UIButton? - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть следующий код

import UIKit

class CustomButton: UIButton {

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        self.theme_setTitleColor(GlobalPicker.customButtonTextColor, forState: .normal)
        self.theme_setTitleColor(GlobalPicker.customButtonDisabledTextColor, forState: .disabled)
        self.theme_backgroundColor = GlobalPicker.primaryColor

        self.layer.cornerRadius = self.frame.height/4.0
        self.clipsToBounds = true

    }

    override init(frame: CGRect) {
        super.init(frame: frame)

        self.layer.cornerRadius = self.frame.height/2.0
        self.clipsToBounds = true
    }
}

И я получаю ошибки при попытке построить этот код с Xcode 10. Код прекрасно работает с Xcode 9 и Swift 4.0.Я надеялся на плавный переход, но, видимо, это не то, что я получаю.

enter image description here

Это ошибка Xcode 10?Кто-нибудь еще сталкивался с чем-то подобным?

1 Ответ

0 голосов
/ 19 сентября 2018

Я предполагаю, что где-то в одной из целей вашего проекта или рабочего пространства есть extension, который каким-то образом портит UIButton.(То, что это возможно, очевидно, и я считаю это ошибкой; см. https://bugs.swift.org/browse/SR-2935 и соответствующие дубликаты, в том числе https://bugs.swift.org/browse/SR-3228, и мой на https://bugs.swift.org/browse/SR-8010.)

Youможет быть в состоянии перемещаться по расширению путем создания подкласса UIKit.UIButton вместо простого UIButton. По причинам, почему это работает, см. обсуждение комментариев в моем двойном отчете об ошибке. Когда расширение ведет себя таким образом, оно перегружает методов, и вы можете различить UIButton, у которого нет перегрузок, используя пространство имен модуля.

...