草庐IT

Protocols

全部标签

swift - 我可以在协议(protocol)中使用@IBOutlets吗(Swift)

我有一个按以下方式定义的小协议(protocol):importUIKitprotocolHasMeterAnimation{funcanimateMeter(scrollableView:UIScrollView)}它的实现需要使用IBOutlets:funcanimateMeter(scrollableView:UIScrollView){letmaxYPosTableview=scrollableView.frame.height+scrollableView.frame.origin.yletprogressBarRect=self.progressBar.frameletre

ios - 未触发自定义委托(delegate)方法

我使用以下代码在TabBarController中添加了一个圆形按钮importUIKitprotocolAddButtonProtocol:class{funcaddButtonIsClicked()}classMainTabBar:UITabBar{openvarbuttonDelegate:AddButtonProtocol?privatevarmiddleButton=UIButton()overrideopenfuncawakeFromNib(){super.awakeFromNib()setupMiddleButton()}overrideopenfunchitTest(_

swift - 如何强制可以从 Swift 中的字符串解析作为参数传入的类?

我正在尝试表示一个函数调用,这样我就可以编写一些用于创建游戏的脚本语言。现在我只是在尝试设置我需要的所有协议(protocol)和类之间的接口(interface)。我有一个类(class),FunctionCall.它有一个方法execute()执行当前函数并返回T?类型的实例.FunctionCall还有一个类型为FunctionCall的实例数组来表示任何参数。它还有一个字段,stringRepresentation,这是用户将输入的函数调用的字符串表示形式。这个字符串可能类似于createNode(named:myCircle)或者,在基本情况下,它可能只是一个文字,例如myC

swift - 数组中的协议(protocol)和关联类型

我有一个协议(protocol)Node:protocolNode{varparent:Node?varchildren:[Node]}由类实现:classTreeNode:Node{varparent:Node?varchildren:[Node]}但这会带来一个问题,因为在TreeNode中访问父级现在给我一个Node,我想做TreeNode对他们的具体操作。所以我想将协议(protocol)更改为:protocolNode{associatedtypeT:Nodevarparent:T?varchildren:[T]}我将类定义为:classTreeNode:Node{varpa

ios - 在类型化数组中存储符合泛型协议(protocol)的对象

我有一个协议(protocol):protocolAdjustable:Equatable{associatedtypeTvarid:String{getset}varvalue:T{getset}init(id:String,value:T)}以及符合它的结构:structAdjustment:Adjustable{staticfunc==(lhs:Adjustment,rhs:Adjustment)->Bool{returnlhs.id==rhs.id}typealiasT=CGFloatvarid:Stringvarvalue:T}我正在构建一个包装类,其行为类似于Set来处理这

swift - 为什么我的特殊 Codable 协议(protocol)与 Swift 的 Codable with Array 的工作方式不同?

使用Codable,我可以创建以下扩展extensionDecodable{publicstaticfuncdecode(data:Data,decoder:JSONDecoder=.default)->Self?{do{returntrydecoder.decode(self,from:data)}catchleterrorasNSError{CodableKit.log(message:"\(error.userInfo)")returnnil}}}并将其用于单个对象和数组类型,例如letperson=Person.decode(data:personData)//singlele

使用具有通用关联类型的枚举的 Swift 协议(protocol)

我正在尝试创建一个在swift中使用通用枚举的协议(protocol)。编译器抛出此错误:Protocolcanonlybeusedasagenericconstraintbecauseithasassociatedtyperequirements截取的短代码:enumGenericEnum{caseUnassociatedcaseAssociated(T)}protocolAssociatedProtocol{typealiasAssociatedTypefuncfoo()->GenericEnum}letbar=[AssociatedProtocol]()你可以找到更长的例子her

swift - 当协议(protocol)具有关联类型时,从常规方法调用协议(protocol)默认实现

我有一个协议(protocol),它有一个带默认参数的静态方法。我想更改实现该协议(protocol)的类中的默认值。本质上是做类和super可以轻松完成的事情。当协议(protocol)没有关联类型时,我只有一个解决方案。以下代码有效,但一旦取消注释关联的类型声明,它就无法编译。protocolProtocol{//associatedtypeAssociatedType}extensionProtocol{funcsayHello(name:String="World"){print("Hello,\(name)!")}}classClass:Protocol{typealiasA

ios - Swift 协议(protocol)关联类型和继承约束

我想用UICollectionViewController构建一个iOS应用程序每行始终具有相同数量的单元格。因为我不想要我的UICollectionViewController为了处理太多事情,我重构了我的代码并实现了一些有趣的事情,比如protocolassociatedtype和通用类型。现在,我的应用程序由4个不同的.swift组成文件。1。CustomFlowLayout.swiftCustomFlowLayout是UICollectionViewFlowLayout的简单子(monad)类这允许我们设置它的minimumInteritemSpacing,minimumLin

arrays - 带有协议(protocol)的 Swift 泛型数组

这个问题在这里已经有了答案:Swiftgenericcoercionmisunderstanding(1个回答)HowdoIstoreavalueoftypeClassinaDictionaryoftype[String:Class]inSwift?(2个答案)关闭5年前。我只是好奇是否可以做类似下面的事情protocolData{}classA:Data{}classB:Data{}classGeneric{}classdoStuff{funcprepareToDoStuff(){self.doTheStuffWithGenerics([Generic(),Generic])}fun