gpt4 book ai didi

ios - 从父类创建实例时的类型转换

转载 作者:可可西里 更新时间:2023-11-01 00:35:38 26 4
gpt4 key购买 nike

我想问一些关于 Swift 中类型转换的问题。

有 2 个类。

  1. RootViewController
  2. MyViewController

类层次如下:

class RootViewController: UIViewController {

}

class MyViewController: RootViewController {

}

而且,我想简单地调用 instance 函数来从 xib 文件创建一个实例。所以我在 RootViewController 中实现了以下功能。

objective-C

+ (instancetype)instance {
return [[[self class] alloc] initWithNibName:NSStringFromClass([self class]) bundle:nil];
}

swift

public class func instance<T:RootViewController>() -> T {
let type = self as UIViewController.Type
let name = NSStringFromClass(type).components(separatedBy: ".").last!
let instance = type.init(nibName: name, bundle: nil)
return instance as! T
}

并且,用法如下。

objective-C

MyViewController *vc = [MyViewController instance];

swift

let vc = MyViewController.instance() as! MyViewController

问题:

我是否必须始终使用 as! 强制转换实例类型? Swift 中的 MyViewController?或者有人可以建议我使用 Swift 的更好方法吗?

如有任何帮助,我们将不胜感激!

最佳答案

你也可以这样使用

let vc:MyViewController = MyViewController.instance()

关于ios - 从父类创建实例时的类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44627108/

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