我正在创建一个名为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'我不知道为什么要收到这条消息,因为通过协议扩展,类不需要符合协议。
如果我能得到一些关于这个issue.Thanks的建议,那就太好了
PS:这是这些代码的链接。你可以随便看看。
发布于 2016-06-05 19:02:49
问题是您的extension不是公共的,因此它在它定义的模块之外是不可见的,在本例中是MyFramework。
这意味着您的视图控制器只知道LoginProtocol定义(因为这是公共的),而不是默认的实现。因此,编译器会抱怨没有实现的协议方法。
因此,解决办法是简单地公开扩展:
public extension LoginProtocol {
func appBannerImage() -> UIImage? {
return (UIImage(named: "login_new_top"))
}
func appLogoImage() -> UIImage? {
return (UIImage(named: "appLogo"))
}
}https://stackoverflow.com/questions/37645540
复制相似问题