在swift 中能夠表示 ‘任意’這個(gè)概念的除了 Any 和 AnyObject 以外,還有一個(gè) AnyClass
定義是
typealias AnyClass = AnyObject.Type
通過(guò) AnyObject.Type 這種方式所得到的是一個(gè)元類型(Meta)
// 獲取命名空間
let namespace = Bundle.main.infoDictionary?["CFBundleName"] as? String ?? ""
// 類名字字符串
let clsName =? "ViewControllerName"
// 獲取具體的類
let cls = NSClassFromString(namespace + "." +? clsName) as? UIViewController.Type
// 獲取實(shí)例化對(duì)象
let vc = cls?.init()
//
class MusicViewController: UIViewController { }
class AlbumViewController: UIViewController { }
let userimgVCTypes: [AnyClass] = [MusicViewController.self, AlbumViewController.self]
func setupViewControllers(_ vcTypes: [AnyClass]){
for vcType in vcTypes {
if vcType is UIViewController.Type {
let vcClass = vcType as! UIViewController.Type? // 獲取類
let vc = vcClass.init()? ? ? ? ? ? ? ? ? ? ? ? // 獲取類實(shí)例對(duì)象
print(vc)
}
}
}
//
let tableView = UITableView()
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cellId")