草庐IT

Protocol_A

全部标签

ios - 子类化与协议(protocol)

让我们从Class方法开始:classLoginCredentials{varid:Stringinit(userID:String){self.id=userID}}然后我们将有以下内容:classFacebookLoginCredentials:LoginCredentials{vartoken:Stringinit(userID:String,userToken:String){self.token=userTokensuper.init(userID:userID)}}和classTwitterLoginCredentials:LoginCredentials{vartoken

swift - 带有 Swift 协议(protocol)的通用类

我有一个像这样的基本协议(protocol):publicprotocolBasicSwiftClassLayout{varnibName:String{get}}我的课是这样的:publicclassBasicSwiftClass{}我定义了2个不同的结构,这样我就可以用2个不同的nib启动这个类:publicstructNormalLayout:BasicSwiftClassLayout{publicletnibName="NormalLayoutNibName"}和publicstructOtherLayout:BasicSwiftClassLayout{publicletnib

swift - 使用默认参数值声明协议(protocol)函数

我希望这个函数在协议(protocol)中:funcslideToRight(currentViewControllerviewController:UIViewController,completion:((Bool)->())?=nil){//dosomestuff}但是当我写这样的协议(protocol)时:protocolSomeDelegate{funcslideToRight(currentViewControllerviewController:UIViewController,completion:((Bool)->())?=nil)}我遇到了一个错误:Defaulta

objective-c - 为什么Objective-C类和协议(protocol)可以重名,而Swift不可以,语言实现有什么区别?

Swift,无法编译,编译器会直接报错。protocolTest{}structTest{}//Swiftcompileoutput://Untitled.swift:4:8:error:invalidredeclarationof'Test'structTest{}//Untitled.swift:2:10:note:'Test'previouslydeclaredhereprotocolTest{}Objective-C,可以编译成功,比如NSObject是类名,也是协议(protocol)名#import@protocolTest@end@interfaceTest@endint

swift - 如何检查是否符合 Swift 中关联类型的协议(protocol)?

当我想检查一个类型是否符合一个简单的协议(protocol)时,我可以使用:iflettype=ValueType.selfas?Codable.Type{}当协议(protocol)具有关联类型时,例如RawRepresentable具有RawValue,当我这样做时:iflettype=ValueType.selfas?RawRepresentable.Type{}编译器将显示以下错误:Protocol'RawRepresentable'canonlybeusedasagenericconstraintbecauseithasSelforassociatedtyperequirem

ios - 来自 Objective-C 的可选协议(protocol)不是应该在 Swift 中完成的事情吗?

在Objective-C中,使用符合协议(protocol)并设置委托(delegate)以允许两个对象相互通信是一种非常常见的范例。其中一部分是他们必须实现的可选协议(protocol)。Swift似乎并没有真正将其视为其语言的一部分。它有协议(protocol),但为了将协议(protocol)中的方法标记为可选,协议(protocol)需要一个objc前缀,告诉我它也是一个Objective-C遗留物?有没有我们应该做的更像Swift的事情?传递花哨的闭包之类的东西? 最佳答案 在thisDeveloperForumstopi

swift - 如何覆盖函数的协议(protocol)扩展默认实现?

是否可以获取以下代码来调用MyClass2:someFuncWithDefaultImplementation()?protocolMyProtocol:class{funcsomeFuncWithDefaultImplementation()funcsomeFunc()varsomeInt:Int{getset}}extensionMyProtocol{funcsomeFuncWithDefaultImplementation(){someInt=5}funcsomeFunc(){someFuncWithDefaultImplementation()}}classMyClass:My

Swift 4 使用协议(protocol)和 `Self` 伪造存在的方法

在Swift中有数百种使用协议(protocol)和Self来伪造存在性的解决方案,但它们大多指的是Swift2和Swift3可能带来的光明future......现在Swift4已经出来了,对泛型进行了很好的补充。但我找不到任何建议如何将其放入缺失的存在问题中。关于如何以Swift4方式解决这个问题有什么想法吗?例子:importUIKitprotocolBla{funccompare(other:Self)}extensionCGFloat:Bla{funccompare(other:CGFloat){print("ExtendedCGFloat")}}extensionUIEdg

ios - 类型不符合未定义的协议(protocol)

在Xcode6Beta2中,我编写了以下类:classItem:Printable,Hashable{vardescription:String{return"..."}varhashValue:Int{return1}}我收到一条错误消息,指出类型“Item”不符合协议(protocol)“Equatable”,即使我没有尝试实现名为“Equatable”的协议(protocol)。有没有人见过这样的行为?任何解决方案或解决方法?谢谢! 最佳答案 根据theHashabledocs:(请参阅该页面的最底部)Typesthatcon

swift - 类型 'Int' 不符合协议(protocol) 'BooleanType'

我对这个陈述做错了什么?currentRow是一个NSIndexPathoverridefunctableView(tableView:UITableView,heightForRowAtIndexPathindexPath:NSIndexPath)->CGFloat{ifindexPath.row&¤tRow?.row==5{return300}return70我得到的错误是:Type'Int'doesnotconformtoprotocol'BooleanType' 最佳答案 如果您想检查,如果您的currentRo