Ios 如何在Swift 5中的Xcode游乐场中创建代理设计模式?
我在使用快速游乐场时遇到了某种问题,试图设置一个简单的委托设计 问题似乎是这样一个事实,协议不能标记为公共的,但游乐场中的源文件夹被视为一个新模块。所以我找不到解决这个问题的办法 这是我迄今为止的代码(在源文件夹中,VIEWCONTROLLER位于游乐场文件中)Ios 如何在Swift 5中的Xcode游乐场中创建代理设计模式?,ios,swift,xcode,protocols,swift-playground,Ios,Swift,Xcode,Protocols,Swift Playground,我在使用快速游乐场时遇到了某种问题,试图设置一个简单的委托设计 问题似乎是这样一个事实,协议不能标记为公共的,但游乐场中的源文件夹被视为一个新模块。所以我找不到解决这个问题的办法 这是我迄今为止的代码(在源文件夹中,VIEWCONTROLLER位于游乐场文件中) //标记:-导入 导入UIKit //马克:协议 协议UIManagerDelegate{ func didChangePage(转发:Bool) } //标记:-属性和初始值设定项 公共类UIManager{ //性质 私有let p
//标记:-导入
导入UIKit
//马克:协议
协议UIManagerDelegate{
func didChangePage(转发:Bool)
}
//标记:-属性和初始值设定项
公共类UIManager{
//性质
私有let parentView:UIView
私有变量委托:UIManagerDelegate
//初始化器
public init(用于视图:UIView,委托:UIManagerDelegate){
self.parentView=view
self.delegate=委托
}
}
我收到的错误消息如下:无法将初始值设定项声明为公共,因为其参数使用内部类型。在尝试将协议标记为公共时,这也会产生错误
你们知道怎么解决这个问题吗?
非常感谢您事先提供的帮助。将代表公开
public protocol UIManagerDelegate
谢谢,现在可以了,但是当我以前尝试这个方法时,我收到一条错误消息,告诉我不能将协议标记为公共协议。你知道为什么会出现这个错误消息吗?可能是你把函数公开了,而不是在类中。也许,非常感谢你的帮助。现在它开始工作了;)与您最初的问题无关,但我们通常将协议定义为
类
协议(例如协议UIManagerDelegate:class{…}
),并将委托
属性设为弱
引用(例如私有弱var委托:UIManagerDelegate?
)。对委托对象的强引用是一个非常容易引入强引用循环的方法。我还建议不要使用UI
前缀,因为这是用于UIKit符号的,将来使用它可能会引起混淆。