gpt4 book ai didi

ios - 自定义按钮的初始化程序

转载 作者:行者123 更新时间:2023-11-29 01:25:38 24 4
gpt4 key购买 nike

class BorderedButton: UIButton {

// Some properties

required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
self.themeBorderedButton()
}

override init(frame: CGRect) {
super.init(frame: frame)
self.themeBorderedButton()
}

func themeBorderedButton() {
//sets up the button
}

}

我一直在为我的项目阅读一些代码,我遇到了这个。我已经阅读了 Swift 2.0 的初始化程序文档,我知道对于 override init 我们只是从 UIView 覆盖 init 并且在我们创建按钮时调用这个初始化程序以编程方式。当我们在 Storyboard 中创建按钮时调用 required init

我的第一个问题是:

required init 在代码中的确切位置,因为我查看了 NSCoder 的所有父类(super class),没有一个方法具有 required init

我的第二个问题是:

NSCoder 到底是做什么的我已经阅读了文档并且我对它传输信息有一个粗略的了解,但我还需要知道除此之外的任何信息吗?在一个重要的应用程序中,类 NSCoder 是否被大量使用?

最佳答案

UIView 符合 NSCoding 协议(protocol),需要 init(coder:)

UIKit 使用 NSCoder 加载 Storyboard和 XIB 文件中定义的 View 、 View 层次结构和 View Controller 。

NSCoder 是 iOS 中存储和加载结构化数据的方案。它主要通过 NSKeyedArchiverNSKeyedUnarchiver 使用。

除了上面提到的情况外,我不建议在任何地方使用它,尤其是。因为使用 Swift 保持向后兼容性变得更加困难。

关于ios - 自定义按钮的初始化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34057823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com