ton*_*ran 5 protocols ios swift swift-protocols
我正在创建一个名为contains的框架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"))
}
}
Run Code Online (Sandbox Code Playgroud)
接下来,我添加一个新目标来创建一个名为的演示应用程序MyDemoApp,它正在使用MyFramework:
import UIKit
import MyFramework
class LoginViewContainer: UIViewController, LoginProtocol {
// I think I am fine with defaults method. But actually getting an error
}
Run Code Online (Sandbox Code Playgroud)
目前,我从编译器收到错误,如
type 'LoginViewContainer does not conform protocol 'LoginProtocol'
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我收到此消息,因为通过协议扩展,该类不需要符合协议
如果我能就这个问题得到一些建议,那就太好了.谢谢
PS:这是这些代码的链接.随便看看它.
问题在于您extension不是公开的 - 因此在这种情况下,它在其定义的模块之外是不可见的MyFramework.
这意味着您的视图控制器只知道LoginProtocol定义(因为这是公共的),而不是默认实现.因此,编译器抱怨没有实现协议方法.
因此,解决方案是简单地将扩展公开:
public extension LoginProtocol {
func appBannerImage() -> UIImage? {
return (UIImage(named: "login_new_top"))
}
func appLogoImage() -> UIImage? {
return (UIImage(named: "appLogo"))
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1741 次 |
| 最近记录: |