gpt4 book ai didi

ios - 强制 Nib 加载器使用 init?(带有 :) for custom subclass of NSObject in iOS

转载 作者:行者123 更新时间:2023-11-28 08:04:58 25 4
gpt4 key购买 nike

我添加到 XIB 自定义 NSObject,将其类设置为符合 NSCoding 协议(protocol)的我的 NSObject 子类。通过初始化 UINibLoader 使用 init()。

根据 Apple 在 iOS 中的资源编程指南,任何符合 NSCoding 协议(protocol)的对象都将发送 -initWithCoder: 消息。

是否可能,如果是如何强制 UIKit 使用 init?(with:) 用于 NSObject 的自定义子类?

UPD:我的类(class):

class SomeClass: NSObject, NSCoding {

static var sharedSomeClass: SomeClass = {
return SomeClass()
}()

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

override func encode(with aCoder: NSCoder) {
super.encode(with: aCoder)
}

override func awakeAfter(using aDecoder: NSCoder) -> Any? {
return SomeClassManager.sharedSomeClass

}

在 XIB 中,我连接到 ViewController 中的 @IBOutlet var someObject: SomeClass!

最佳答案

试试这个:

要强制它使用另一个 init 方法,请将 -initWithCoder 方法添加到您的子类并覆盖它以调用您自己的 init 方法,如下所示:

Objective-C:(请有人为我添加 Swift 翻译)

-(instancetype)initWithCoder(NSCoder*)aDecoder{

self = [super initWithCoder:aDecoder];

if(self){
[self customInit];
}

return self;
}

这样,当 -initWithCoder 被调用时,您的 init 方法将最终被调用。对 -initWithFrame

做同样的事情

关于ios - 强制 Nib 加载器使用 init?(带有 :) for custom subclass of NSObject in iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45444587/

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