Swift:如何在 return 类型的协议中声明 func?

Swift: How I can declare func in a protocol with return type self?

我想做这样的事情(这不是编译代码,因为这只是我想在最后收到的示例):

protocol AP {
 class func perform() -> self
}

class A: UIViewController, AP {
//
...
//
 class func perform() -> A {
   return A()
 }
}

我需要这个作为结果 let vc = A.perform(),意味着我需要的协议将是 return 自己类型的订阅者

我该怎么做?

  1. 在协议中使用静态方法而不是 class 方法。
  2. 给一个return类型。自己不是 return 类型。

    protocol AP {
        func perform() -> ()
    }
    
    class A: UIViewController, AP {
        //
            ...
        //
    
        func perform() {
        }
    }
    

我认为这应该可以满足您的要求:

protocol AP {
    associatedtype T

    static func perform() -> T
}

class A: UIViewController, AP {
    //
    ...
    //
    class func perform() -> A {
        return A()
    }
}

您现在可以按照自己的意愿执行此操作:

let vc = A.perform()