草庐IT

compact_protocol

全部标签

Swift:实例化符合协议(protocol)的类(AnyClass)

我想实现类似“registerClassForAction”的东西。为此,我定义了一个协议(protocol):@objcprotocolTestProt{functestMe()->String}让我们做一个类声明:classTestClass:NSObject,TestProt{functestMe()->String{return"test"}}我定义了在另一个类中注册对象的函数:funcregisterClassForAction(aClass:AnyClass){...}切换到REPL,我将模拟register方法:letaClass:AnyClass=TestClass.c

swift - 制作类型属性并符合 Swift 中的协议(protocol)

我想创建一个特定类型的属性并符合协议(protocol),我会在Objective-C中这样做:@property(nonatomic)UIViewController*controller;我要找的是指定该属性可以用一个也符合CustomProtocol的UIViewController类型的对象来设置,这样就很清楚基类是什么了。我知道我可能只使用一个简短的类stub来获得相同的结果,即classCustomViewController:UIViewController,CustomProtocol{}但这似乎不是最干净的方法。 最佳答案

swift - 制作类型属性并符合 Swift 中的协议(protocol)

我想创建一个特定类型的属性并符合协议(protocol),我会在Objective-C中这样做:@property(nonatomic)UIViewController*controller;我要找的是指定该属性可以用一个也符合CustomProtocol的UIViewController类型的对象来设置,这样就很清楚基类是什么了。我知道我可能只使用一个简短的类stub来获得相同的结果,即classCustomViewController:UIViewController,CustomProtocol{}但这似乎不是最干净的方法。 最佳答案

Swift Struct with Lazy,符合协议(protocol)的私有(private)属性(property)

首先,我有一个只定义几个只读属性的协议(protocol),例如:protocolExample{varvar1:String{get}varvarArray:[String]{get}}然后我想创建一个符合该协议(protocol)的结构。我遇到的问题是我有两个相互矛盾的要求:属性需要延迟生成。属性是相关的,需要一起生成。我似乎无法找到一种方法来做到这一点。我最接近的是这样的:structAStruct:Example{privatelazyvardata:(var1:String,varArray:[String])={varstringValue:String=""varstri

Swift Struct with Lazy,符合协议(protocol)的私有(private)属性(property)

首先,我有一个只定义几个只读属性的协议(protocol),例如:protocolExample{varvar1:String{get}varvarArray:[String]{get}}然后我想创建一个符合该协议(protocol)的结构。我遇到的问题是我有两个相互矛盾的要求:属性需要延迟生成。属性是相关的,需要一起生成。我似乎无法找到一种方法来做到这一点。我最接近的是这样的:structAStruct:Example{privatelazyvardata:(var1:String,varArray:[String])={varstringValue:String=""varstri

ios - 如何符合协议(protocol)变量的设置和获取?

我正在研究协议(protocol)以及如何遵守它们。protocolHuman{varheight:Int{getset}}structBoy:Human{varheight:Int{return5}//error!}我正在尝试学习可以实现set和get的不同方法。但是上面的代码抛出以下错误:type'Boy'doesnotconformtoprotocol'Human'但是这样写是不会有任何错误的:structBoy:Human{varheight=5//noerror}当您还可以设置变量时,我不明白其中的区别,也不明白究竟需要实现什么。我研究了不同的问题和教程,但他们都只是写了就走

ios - 如何符合协议(protocol)变量的设置和获取?

我正在研究协议(protocol)以及如何遵守它们。protocolHuman{varheight:Int{getset}}structBoy:Human{varheight:Int{return5}//error!}我正在尝试学习可以实现set和get的不同方法。但是上面的代码抛出以下错误:type'Boy'doesnotconformtoprotocol'Human'但是这样写是不会有任何错误的:structBoy:Human{varheight=5//noerror}当您还可以设置变量时,我不明白其中的区别,也不明白究竟需要实现什么。我研究了不同的问题和教程,但他们都只是写了就走

swift - 定义需要特定类型序列的 Swift 协议(protocol)

假设我们正在讨论Int类型的元素(但问题仍然适用于任何类型)我有一些功能需要遍历一系列Int。但我不关心这个序列在幕后是否被实现为数组、集合或任何其他奇特的结构,唯一的要求是我们可以循环遍历它们。Swift标准库将协议(protocol)SequenceType定义为“可以使用for...in循环迭代的类型”。所以我的直觉是定义一个这样的协议(protocol):protocolHasSequenceOfInts{varseq:SequenceType{get}}但这行不通。SequenceType不是可以专门化的通用类型,它是一种协议(protocol)。任何特定的SequenceT

swift - 定义需要特定类型序列的 Swift 协议(protocol)

假设我们正在讨论Int类型的元素(但问题仍然适用于任何类型)我有一些功能需要遍历一系列Int。但我不关心这个序列在幕后是否被实现为数组、集合或任何其他奇特的结构,唯一的要求是我们可以循环遍历它们。Swift标准库将协议(protocol)SequenceType定义为“可以使用for...in循环迭代的类型”。所以我的直觉是定义一个这样的协议(protocol):protocolHasSequenceOfInts{varseq:SequenceType{get}}但这行不通。SequenceType不是可以专门化的通用类型,它是一种协议(protocol)。任何特定的SequenceT

ios - 候选不是 '@objc' 但协议(protocol)需要它

我一直在关注这个tutorial学习快速和iOS应用程序开发。在协议(protocol)部分,教程定义了以下协议(protocol):@objcprotocolSpeaker{funcSpeak()optionalfuncTellJoke()}它说如果你想要一个带有可选方法的协议(protocol),你必须在协议(protocol)前加上@objc标签(即使你的类没有与objective-C互操作)。然后,它显示了实现协议(protocol)的示例:classVicki:Speaker{funcSpeak(){println("Hello,IamVicki!")}funcTellJok