gpt4 book ai didi

ios - 协议(protocol)扩展,不符合协议(protocol)

转载 作者:搜寻专家 更新时间:2023-10-30 22:59:08 24 4
gpt4 key购买 nike

我正在创建一个名为 MyFramework 的框架,其中包含 LoginProtocol.swift,它具有一些默认行为

import UIKit

public protocol LoginProtocol {
func appBannerImage() -> UIImage?
func appLogoImage() -> UIImage?
}


extension LoginProtocol {
func appBannerImage() -> UIImage? {
return (UIImage(named: "login_new_top"))
}

func appLogoImage() -> UIImage? {
return (UIImage(named: "appLogo"))

}
}

接下来,我将添加一个新目标来创建一个名为 MyDemoApp 的演示应用程序,该应用程序使用 MyFramework:

import UIKit
import MyFramework

class LoginViewContainer: UIViewController, LoginProtocol {
// I think I am fine with defaults method. But actually getting an error
}

目前,我从编译器中得到一个错误,例如

type 'LoginViewContainer does not conform protocol 'LoginProtocol'

我不确定为什么会收到此消息,因为使用协议(protocol)扩展,该类不需要符合协议(protocol)

如果我能得到一些关于这个问题的建议,那就太好了。谢谢

附言:this是这些代码的链接。随便看看。

最佳答案

问题是您的 extension 不是公开的——因此它在定义它的模块之外是不可见的,在本例中是 MyFramework

这意味着您的 View Controller 只知道 LoginProtocol 定义(因为这个公开的),但不知道默认实现。因此编译器提示协议(protocol)方法没有被实现。

因此,解决方案是简单地公开扩展:

public extension LoginProtocol {
func appBannerImage() -> UIImage? {
return (UIImage(named: "login_new_top"))
}

func appLogoImage() -> UIImage? {
return (UIImage(named: "appLogo"))

}
}

关于ios - 协议(protocol)扩展,不符合协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37645540/

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