草庐IT

SMB1Protocol

全部标签

swift - 采用协议(protocol)+扩展与使用类实例的区别

我一直在努力掌握面向协议(protocol)的编程,但我不明白以下两种情况之间的区别...场景1我有两个类UIViewControllers。这两个类都需要使用一些通用功能,所以我创建了一个协议(protocol)和一个带有协议(protocol)默认实现的扩展,然后ViewController只需要在类行中包含协议(protocol),它们就会自动继承所需的功能。即...protocolSomeProtocol{funcfoo()}extensionSomeProtocol{funcfoo(){//execute}}classFirstViewController:UIViewCon

关联类型受限于集合的 Swift 协议(protocol)扩展,不能使用下标

我正在尝试编写一个符合CollectionProtocol的协议(protocol),它有一个associatedType-Object和一个属性对象。protocolDDCDataSource:Collection{associatedtypeObjectvarobject:Object{getset}}我想为Object也符合Collection协议(protocol)的情况添加一些默认功能,即直接返回Object对这些必需的Collection属性和函数的实现。除了Collection对下标的要求外,似乎一切正常。Cannotsubscriptavalueoftype'Self.

xcode - Swift,Equatable 协议(protocol)错误?

我正在Swift中构建一个非常简单的结构,其中包含一个可选值数组。该结构必须符合Equatable协议(protocol)。这是代码:structMyTable:Equatable{varvalues:[Int?]=Array(count:64,repeatedValue:nil)}func==(lhs:MyTable,rhs:MyTable)->Bool{returnlhs.values==rhs.values}很简单。我没有看到任何错误,但编译器给出了错误:“'[Int?]'不可转换为'MyTable'”。我在做傻事吗?或者这是编译器的错误?谢谢!(使用Xcode6-Beta5)

swift - 将类变量声明为符合 Swift 协议(protocol)

在Swift中,我如何声明一个明确声明它符合某些协议(protocol)的变量?objective-c等价物是@propertyid据我了解,这样做:vara:NSObject声明一个类型为NSObject协议(protocol)的变量,但我不这样做,我想声明一个类型为AnyObject的变量。符合。我也有兴趣了解如何声明一个对象数组,其中每个对象都符合该协议(protocol)。 最佳答案 其实不需要AnyObject这里;如果您只关心遵守协议(protocol)Proto,你可以简单地写vara:Proto.(在某些情况下,您的

swift - 为什么我的简单协议(protocol)只能用作通用约束?

我正在尝试做一些用于依赖注入(inject)的协议(protocol)组合,但我遇到了一个问题,我怀疑可能没有我想要的解决方案,但我看不到逻辑原因:protocolDM1{funcsayHi()->Void}protocolDM2{funcsayHello()->Void}protocolVM1{typealiasT:DM1vardm:T{get}}protocolVM2{typealiasT:DM2vardm:T{get}}protocolRT:VM1,VM2{}classJames{letrt:RTinit(rt:RT){self.rt=rt}}上面的代码在rt上导致错误“Prot

swift - 类型 "T?"不符合协议(protocol) 'Equatable'

我有一个类似于这个的通用类:classC{lett:Tinit(t:T){self.t=t}}当我尝试将Int?包装在里面时,出现以下错误://ERROR:Type"Int?"doesnotconformtoprotocol'Equatable'letc=C(t:nil)快速测试表明Int?确实是Equatable:leta:Int?=5letb:Int?=6letc=a==b//NOERROR也许我今天太累了? 最佳答案 情报?不是平等的您需要T成为Equatable.但是你正在传递Int?(Optional的简写符号)不是Equ

swift - 当某些协议(protocol)函数更改其签名时,我可以强制编译器失败吗?

有没有办法将某些Swift函数标记为实现某些协议(protocol)函数,这样如果协议(protocol)的签名发生变化,编译器就可以将实现标记为错误。例如,考虑这个例子,我有一个UIViewController实例的Foo协议(protocol)的默认实现,我想为自定义Bar覆盖它类是UIViewController的子类。//V1protocolFoo{funcnumber()->Int}extensionFoowhereSelf:UIViewController{funcnumber()->Int{return0}}//Overridesthedefaultimplementat

objective-c - 为什么需要 '@objc' 来检查 Swift 中的协议(protocol)一致性?

Apple的SwiftProgrammingLanguageGuide指出Youcancheckforprotocolconformanceonlyifyourprotocolismarkedwiththe@objcattribute如果我不与Objective-C互操作,为什么有必要这样做? 最佳答案 Swift1.2更新正如RyanM指出的那样,语言发生了变化,不再需要@objc关键字。事实上,下面的简单示例现在可以在没有@objc关键字的情况下工作:protocolAp{funchello()}classA:Ap{funche

ios - Swift-自定义 UITableViewCell 委托(delegate)给 UIViewController 只有一种协议(protocol)有效

在应用程序中,我有我的UIViewController遵守的自定义协议(protocol)。我有一个自定义的tableViewCell类,里面有UIImageView和UITextView。出列后,我将单元格的委托(delegate)设置为UIViewController。但是,只有一个自定义协议(protocol)会进行回调(图像选择器协议(protocol))。protocolcustomProtocol1{funcpickImage(myInt:Int)}protocolcustomProtocol2{funcprotocol2(myInt:Int)}classcontrolle

xcode - ** 'FlickrPhotosViewController' 与协议(protocol) 'UICollectionViewDataSource' 的冗余一致性 **

这个问题在这里已经有了答案:RedundantconformanceerrormessageSwift2(3个答案)关闭6年前。我正在学习这个(http://www.raywenderlich.com/78550/beginning-ios-collection-views-swift-part-1)教程,现在我是出现这个错误:“FlickrPhotosViewController”与协议(protocol)“UICollectionViewDataSource”的冗余一致性所以我这里有这段代码:extensionFlickrPhotosViewController:UICollect