首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果在扩展Swift5.1 Xcode11.3中声明,则子类无法访问方便初始化

如果在扩展Swift5.1 Xcode11.3中声明,则子类无法访问方便初始化
EN

Stack Overflow用户
提问于 2020-01-23 20:43:55
回答 2查看 134关注 0票数 0
代码语言:javascript
复制
    import UIKit

    public class MyButton: UIButton {}

    public extension UIButton {
        var someProperty: Int { 1 } // visible in xcframework

        convenience init(label: String) { // NOT visible in xcframework
            self.init()
        }
    }

我做了xcframework。它里面的代码。我将这个xcframework链接到应用程序并使用它,但是MyButton类没有方便的初始化。XCode 11.3

EN

回答 2

Stack Overflow用户

发布于 2020-01-23 20:48:59

创建MyButtonextension,而不是UIButton

代码语言:javascript
复制
public extension MyButton {
    var someProperty: Int {
        return 1
    }

    convenience init(label: String) { 
        self.init()
    }
}

在应用程序中,使用以下命令访问它

代码语言:javascript
复制
MyButton(label: "Button_Label")

编辑:

即使你继承了MyButton的子类,在你定义自己的初始化器之前,init(label:)在子类中仍然是可用的。

代码语言:javascript
复制
public class MySuperButton: MyButton {

}

您可以在主项目中访问init(label:),如

代码语言:javascript
复制
MySuperButton(label: "Super Button")
票数 0
EN

Stack Overflow用户

发布于 2020-01-23 20:51:57

public标志在便利性初始化中是必需的。这将允许init在xcframework中可见。

尝尝这个

代码语言:javascript
复制
import UIKit

public class MyButton: UIButton {}

public extension UIButton {
    var someProperty: Int { 1 } // visible in xcframework

    public convenience init(label: String) { // NOT visible in xcframework
        self.init()
    }
}

但是,您更新的是UIButton,而不是声明的类MyButton。确保这正是你想要做的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59878881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档