草庐IT

UIApplicationDelegate_Protocol

全部标签

enums - 当协议(protocol)包含 Swift 中的枚举时检查协议(protocol)一致性?

在Swift中,为了检查协议(protocol)是否符合is或as?向下转型,您必须使用@objc属性标记协议(protocol)。一旦你用那个属性标记了一个协议(protocol),你似乎就不能有一个以枚举作为属性的协议(protocol),因为枚举不能在Objective-C中表示。enumLanguage:String{caseEnglish="English"caseSpanish="Spanish"caseGerman="German"}@objcprotocolHumanizable{varlanguage:Language{getset}}你会得到一个错误:error:p

swift - 测试协议(protocol)与关联类型的一致性

我有一个使用关联类型的协议(protocol),例如:protocolPopulatable{typealiasTfuncpopulateWith(object:T)}和实现协议(protocol)的类:classDateRowType:Populatable{funcpopulateWith(object:NSDate){print(object.description)}}classStringRowType:Populatable{funcpopulateWith(object:String){print(object)}}但是当我尝试转换或测试一致性时,像这样:letdrt=D

swift 2.0 : Protocol extensions: Two protocols with the same function signature compile error

给定这两个协议(protocol)及其扩展:protocolFirstDelegate{funcsomeFunc()}protocolSecondDelegate{funcsomeFunc()}extensionFirstDelegate{funcsomeFunc(){print("Firstdelegate")}}extensionSecondDelegate{funcsomeFunc(){print("Seconddelegate")}}并试图同时符合它们:classSomeClass:FirstDelegate,SecondDelegate{}我收到编译时错误:Type'Some

Swift - 协议(protocol)中带有 where 子句的关联类型?

考虑以下几点:protocolSomeProtocol{typealiasF:FootypealiasFB:FooBarwhereFB.Foo==F}但这不会编译,因为我们不能像那样将where子句放在typealias中。我一定在这里遗漏了一些东西,因为这可以通过typeparameterization轻松完成,如下所示:structSomeStruct{}什么是where子句等同于关联类型? 最佳答案 Swift(2.1)当前不支持协议(protocol)中关联类型的类型参数化。尽管在这种情况下您甚至不需要where子句来实现功

Swift 关联类型和协议(protocol)继承

我使用的是Swift2.2,我声明了一个具有关联类型的协议(protocol),如下所示:protocolCollectionViewModeling{associatedtypeCellTypefunccellAtIndexPath(indexPath:NSIndexPath)->CellType}现在我有一个符合上述协议(protocol)的View模型协议(protocol):enumMyItemCell{caseMyItemCell1,MyItemCell2}protocolItemsListViewModeling:CollectionViewModeling{associa

swift - 以协议(protocol)和符合类(!)实例作为参数的函数

我正在尝试弄清楚如何定义一个采用以下内容的函数两个参数:协议(protocol)。符合该协议(protocol)的类(引用类型)的实例。例如给定protocolP{}classC:P{}//Class,conformingtoPclassD{}//Class,notconformingtoPstructE:P{}//Struct,conformingtoP这应该编译:register(proto:P.self,obj:C())//(1)但这些不应该编译:register(proto:P.self,obj:D())//(2)DdoesnotconformtoPregister(proto

swift - 向协议(protocol)变量添加两个约束

我有以下swit代码,但无法编译publicprotocolA{}publicprotocolA2{}publicprotocolB{varprops:A{get}}publicprotocolC:B{varprops:A2{get}}structD:A,A2{}structYo:C{varprops:D}我想做的是向var"props"添加两个类型约束:A作为协议(protocol)的一部分B和A2作为协议(protocol)C的一部分。当我尝试在结构C中实现这些协议(protocol)时,编译器认为它无效 最佳答案 如果我理解正

ios - Objective C 类找不到 Swift 协议(protocol)的定义

我有一个Swift协议(protocol),像这样:@objcprotocolLinkable{funcpresentLink(link:MyLink)}我还有一个Objective-C类,它不适合这个协议(protocol):@protocolLinkable;@interfaceMyDetailViewController:MyTableViewControlleretc...据我所知,我已经正确地声明了该协议(protocol),该协议(protocol)具有@objc符号,并且我将其放入ObjectiveC类的接口(interface)声明中,但是我'我仍然在@interfac

ios - 带有 Swift 5.0 编译器的 Xcode 10.2 - 协议(protocol)继承问题

当前的Xcode版本(10.2)存在一个大问题。有一个具有以下签名的BasicViewController类:classBasicViewController:UIViewController,UITableViewDataSource,UITableViewDelegate然后我们有另一个类似ExampleViewController:BasicViewController的类,它有一些额外的逻辑。现在到了棘手的部分......我们在不同的模拟器和设备上构建和运行该应用程序,一切正常。然后我们存档应用程序,突然didSelectRow不再被触发。项目的深度清理和清理使我们能够重现问题

全局函数的 Swift 协议(protocol)和返回类型

这是问题的跟进:ProtocolfuncreturningSelf.协议(protocol)如下:protocolCopyable{init(copy:Self)funccopy()->Self}以下工作正常,但copy()函数对于每个实现都是完全相同的,即funccopy()->Self{returnself.dynamicType(copy:self)}按照这个http://nshipster.com/swift-default-protocol-implementations/我尝试了一个全局函数funccopy(makeCopy:T)->T{returnmakeCopy.dyn