草庐IT

SMB1Protocol

全部标签

swift - 测试实例是否是 Swift 中带有类型别名的协议(protocol)?

这与thisquestion有关.使用typealias我可以创建一个具有“子”var但具有特定类型的类,这正是我正在寻找的。但是当我这样做时,我无法再测试一个实例是否遵循该协议(protocol)。我也尝试过“iflet”,但没有用。有什么办法吗?protocolParent{typealiasChildvarchildren:[Child]{getset}}protocolChild{typealiasParentvarparent:Parent{getset}}classFoo:Parent{varchildren=[Bar]()init(){}}classBar:Child{v

ios - 这些协议(protocol)定义之间有什么区别?

最近对swift中协议(protocol)的定义方式有点迷惑。协议(protocol)OneDelegate:类或协议(protocol)OneDelegate:NSObjectProtocol或@objcprotocolOneDelegate或@class_protocol协议(protocol)OneDelegate我们是否应该继续使用weak作为委托(delegate)?或者喜欢unowned(unsafe)vardataSource:UITableViewDataSource?感谢您的帮助! 最佳答案 第一个和最后一个实际上

swift - 获取声明为协议(protocol)的属性时调用 didSet

这是一些代码:importUIKitprotocolViewModelProtocol{varprice:String{get}}classViewModel:ViewModelProtocol{varprice:String{return"$420"}}classViewController:UIViewController{//IfyouchangethetypetoViewModeldirectly,noinfiniteloopvarviewModel:ViewModelProtocol?=nil{didSet{print("viewModeldidSetcalled")upda

Swift:二元运算符 '==' 不能应用于 "protocol"类型的操作数

我有一个协议(protocol):protocolProfileManagerDelegete{funcdataHaveUpdated(type:ReturnType)并创建一个协议(protocol)数组,并添加/删除监听器:varlisteners:[ProfileManagerDelegete]=[]funcaddListener(listener:ProfileManagerDelegete){listeners.append(listener)}funcremoveLister(listener:ProfileManagerDelegete){forlisinlistener

swift - 协议(protocol)扩展初始化程序强制调用 self.init

我刚刚阅读了有关协议(protocol)初始化程序要求的AppleSwift4文档,并在协议(protocol)扩展中提供了默认实现。importUIKitprotocolProtocol{init()}extensionProtocol{init(){print("SDf")self.init()//Line1//Compilererroroccuredifthisisomitted//"'self.init'isn'tcalledonallpathsbeforereturningfrominitializer"}}structStructure:Protocol{init(stri

ios - 为一个或另一个扩展具有多个约束的协议(protocol) - Swift

我想使用满足OR(||)约束的默认实现来扩展协议(protocol)。classA{}classB{}protocolSomeProtocol{}///Itwillthrowerrorfor||extensionSomeProtocolwhereSelf:A||Self:B{} 最佳答案 你不能用OR扩展协议(protocol),因为你不能在iflet中这样做,因为编译器会推断出self或var的类型,所以如果它符合2种类型,编译器就不会不知道自己是什么类型。(当您键入self.或任何var时,编译器总是知道编译器类型中的var类型

swift - 如何使结构符合具有属性的协议(protocol)符合 swift 4 中的另一个协议(protocol)?

我打算将Web服务中的一些JSON数据反射(reflect)到swift结构中。所以我创建了一个符合可解码协议(protocol)的协议(protocol),并计划创建一些结构来符合它。这是我创建的协议(protocol):protocolXFNovelApiResponse:Decodable{vardata:Decodable{get}varerror:NovelApiError{get}}structNovelApiError:Decodable{letmsg:StringleterrorCode:String}已编译。但是当我开始编写我的结构时,我遇到了一个错误。该结构的代码在

ios - Swift:符合带有 "where"子句的通用方法协议(protocol)

总结:我想创建一个Class这将有一个相应的ClassDelegate与func的协议(protocol)目标:将单个对象和行为与多个对象类一起重用。接收已经具有专门化类的委托(delegate)回调,无需将对象强制转换为特定类即可使用它。示例代码:具有泛型方法的协议(protocol):protocolGenericTableControllerDelegate:AnyObject{funccontroller(controller:GenericTableController,didSelectvalue:T)}通用基础UITableViewController子类:opencla

swift - 类不符合协议(protocol),但结构符合

结构和类都符合协议(protocol)。我使用带有where条件的2个协议(protocol)扩展来为类和结构添加var属性的实现。我很惊讶地看到只有类的编译错误。为什么这发生在类而不是结构上?protocolMyProtocol{varproperty:String{get}}extensionMyProtocolwhereSelf==MyStruct{varproperty:String{return""}}extensionMyProtocolwhereSelf==MyClass{varproperty:String{return""}}structMyStruct:MyProt

function - Swift、数学函数和协议(protocol)

我正在尝试创建2个协议(protocol)ArithmeticType和MathematicType,它们将在通用运算符函数的where子句中使用protocolArithmeticType{func+(lhs:Self,rhs:Self)->Selffunc-(lhs:Self,rhs:Self)->Selffunc*(lhs:Self,rhs:Self)->Selffunc/(lhs:Self,rhs:Self)->Self}extensionInt:ArithmeticType{}extensionDouble:ArithmeticType{}extensionFloat:Ari