草庐IT

SMB1Protocol

全部标签

ios - 面向协议(protocol)编程和委托(delegate)模式

AWWDC2015sessionvideo描述了面向协议(protocol)编程的思想,我想在我future的应用程序中采用这种技术。为了理解这种新方法,我最近几天一直在研究Swift2.0,并且一直在努力让它与DelegatePattern一起工作。.我有两个协议(protocol)定义了我项目中有趣部分的基本结构(示例代码是废话但描述了问题):1)一个委托(delegate)协议(protocol),使一些信息可访问,类似于UITableViewController的dataSource协议(protocol):protocolValueProvider{varvalue:Int{

ios - 从另一个框架 (Restofire) 扩展 Swift 协议(protocol)时的意外行为

我有两个框架首先-Restofire。它有一个带扩展的ResponseSerializer协议(protocol)。publicprotocolResponseSerializable{///Thetypeofobjectreturnedinresponse.associatedtypeModel///The`Alamofire.ResponseSerializer`.varresponseSerializer:ResponseSerializer{get}}extensionResponseSerializable{///`CustomJSONResponseSerializer`p

swift - 协议(protocol)之间的实现冲突

我偶然发现了一个问题,但我不知道该如何解决。假设我们有一个基类(可能来自FrameworkA),其属性名为subject:publicclassMyClass{publicvarsubject:String}我们有一个协议(protocol)(可能来自FrameworkB),具有另一个属性但名称相同:publicprotocolMyProtocol{varsubject:String{get}}这两个属性代表完全不同的东西。如何创建一个继承自MyClass并实现MyProtocol的类?我该如何使用这些属性?publicclassSecondClass:MyClass,MyProtoc

swift - 覆盖子子类中的协议(protocol)默认实现不参与动态调度

考虑以下Playground:protocolA{funcf()->String}extensionA{funcf()->String{return"AAAA"}}classB:A{}classC:B{funcf()->String{return"CCCC"}}leta:A=C()letb:B=C()letc:C=C()a.f()//"AAAA"-why?b.f()//"AAAA"-why?c.f()//"CCCC"我不明白为什么a.f()和b.f()返回"AAAA"-他们应该返回“CCCC”因为funcf()->String应该被动态调度(正如它在协议(protocol)中声明的那样

objective-c - 父子协议(protocol)关系和 ObjC 可用性

我无法使以下代码工作:@objcprotocolChild{}@objcprotocolParent{varchild:Child{get}}classChildImpl:Child{//notpartofthe`Child`protocol//justsomethingspecifictothisclassfuncdoSomething(){}}classParentImpl:Parent{letchild=ChildImpl()funcdoSomething(){//needtobeabletoaccess`doSomething`//fromtheChildImplclassch

Swift 协议(protocol)通用作为函数返回类型

我想像这样使用通用协议(protocol)类型作为函数返回类型:protocolP{associatedtypeTfuncget()->T?funcset(v:T)}classC:P{privatevarv:T?funcget()->T?{returnv}funcset(v:T){self.v=v}}classFactory{funccreateC()->P{returnC()}}但是这段代码编译时报错:不能特化非泛型类型“P”函数签名中未使用泛型参数“T”有没有办法用Swift实现类似的功能? 最佳答案 Swift5.1支持使用O

协议(protocol)的 Swift 扩展存储

我制定了一个协议(protocol):protocolSomeProtocol{funcgetData()->String}我做了一个符合它的结构:structSomeStruct:SomeProtocol{funcgetData()->String{return"Hello"}}现在我希望每个UIViewController都有一个名为source的属性,这样我就可以做类似...classMyViewController:UIViewController{overridefuncviewDidLoad(){self.title=source.getData()}}为此,我创建了一个协

swift - 如果协议(protocol)扩展中定义了静态方法,如何调用协议(protocol)上的静态方法?

protocolCar{staticfuncfoo()}structTruck:Car{}extensionCar{staticfuncfoo(){print("bar")}}Car.foo()//Doesnotwork//Error:CardoesnothaveamembernamedfooTruck.foo()//WorksXcode自动完成Car.foo()正确,所以我想问的是它是否是一个无法编译的错误(说它没有名为foo()的成员).如果静态方法是在协议(protocol)扩展中定义的,你能直接在协议(protocol)上调用静态方法吗? 最佳答案

objective-c - 如何创建符合 Swift 和 Objective-C 之间共享协议(protocol)的类方法?

我最近一直在学习Swift。我决定编写一个混合的Swift/Objective-C应用程序,它使用在两种语言中实现的相同算法来执行计算密集型任务。程序计算大量素数。我定义了一个协议(protocol),计算对象的Swift和Objective-C版本都应该遵守。对象都是单例的,所以我在Objective-C中创建了一个典型的单例访问方法:+(NSObject*)sharedInstance;整个协议(protocol)如下所示:#import@classComputeRecord;typedefvoid(^updateDisplayBlock)(void);typedefvoid(^c

ios - Swift: 'Protocol'数组和实现类数组之间的转换

考虑一个协议(protocol)和一个实现它的类:protocolMyProtocol{varx:Int{get}}classMyClass:MyProtocol{varx:Int=5}我有一个类型为[MyClass]的数组,我希望将它分配给一个类型为[MyProtocol]的变量。但是,这会在Playground(XCode6.3、Swift1.2)中尝试时导致错误:varclassArr:[MyClass]=[MyClass(),MyClass()]varprotocolArrA:[MyProtocol]=classArr//Causeserror:EXC_BAD_INSTRUCT