gpt4 book ai didi

swift - 符合协议(protocol)的对象应该隐藏协议(protocol)方法

转载 作者:行者123 更新时间:2023-11-30 11:57:33 32 4
gpt4 key购买 nike

我有一个使用 Viper 架构设计的应用程序。为了避免出现异常,每个模块都是由符合BaseFactory协议(protocol)的工厂类创建的。

我的应用程序中的一百个 (2%) 模块中的两个应该使用自定义工厂方法创建,该方法不是通过协议(protocol)强制执行的,这是一种接受参数的工厂方法。

是否可以在 MemberProfileFactory 类中“隐藏/禁用”函数 createViperModule()?

protocol BaseFactory {

static func createViperModule () -> UIViewController

}

class HelloFactory: BaseFactory {

static func creatViperModule() -> UIViewController {

let p = HelloPresenter()
let storyboard = UIStoryboard.init(name: "Hello", bundle: nil)
let vc = (storyboard.instantiateInitialViewController() as? HelloVC)!

p.vc = vc
vc.p = p

return vc
}
}


class MemberProfileFactory: BaseFactory {

static func createViperModule() -> UIViewController {

return PublicProfileVC()
}

static func createViperModule(withMember member: MemberModel) -> UIViewController {

let p = MemberProfilePresenter()
let storyboard = UIStoryboard.init(name: "MemberProfile", bundle: nil)
let vc = (storyboard.instantiateInitialViewController() as? MemberProfileVC)!

p.vc = vc
p.user = user
vc.p = p

return vc
}
}

最佳答案

您无法将“createViperModule”设置为私有(private),因为“createViperModule”在“BaseFactory”中声明为内部。但您可以将其声明为可选,因此不强制实现。

@objc protocol BaseFactory {
@objc optional static func createViperModule () -> UIViewController
}

关于swift - 符合协议(protocol)的对象应该隐藏协议(protocol)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47634593/

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