import UIKitpublic 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 UIKitimport MyFrameworkclass LoginVIEwContainer: UIVIEwController,LoginProtocol { // I think I am fine with defaults method. But actually getting an error}
目前,我从编译器收到错误,如
type 'LoginVIEwContainer does not conform protocol 'LoginProtocol'
我不知道为什么我收到此消息,因为通过协议扩展,该类不需要符合协议
如果我能就这个问题得到一些建议,那就太好了.谢谢
PS:this是这些代码的链接.随便看看它.
解决方法 问题是您的扩展程序不是公共的 – 因此它在其定义的模块之外是不可见的,在本例中是MyFramework.这意味着您的视图控制器只知道LoginProtocol定义(因为这是公共的),而不是默认实现.因此,编译器抱怨没有实现协议方法.
因此,解决方案是简单地将扩展公开:
public extension LoginProtocol { func appBannerImage() -> UIImage? { return (UIImage(named: "login_new_top")) } func applogoImage() -> UIImage? { return (UIImage(named: "applogo")) }}总结
以上是内存溢出为你收集整理的ios – 协议扩展,不符合协议全部内容,希望文章能够帮你解决ios – 协议扩展,不符合协议所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)