草庐IT

SMB1Protocol

全部标签

swift - 我的类可以覆盖 Swift 中的协议(protocol)属性类型吗?

protocolParent{varchildren:[AnyObject]{getset}}classFoo{}classBar:Parent{//errorhappensherevarchildren=[Foo]()init(){}}我得到一个错误“Type'Object'doesnotconformtoprotocol'Parent'。我得到这个错误的原因是因为我将child定义为Foo的数组而不是AnyObject。有什么办法可以做到这一点工作? 最佳答案 在协议(protocol)中要求AnyObject意味着childr

objective-c - 如何避免桥接头中的 "Redefinition"和 "Duplicate Protocol"定义错误

我想在swift类中使用objc库和objc类。所以我将以下内容放在Bridging-Header.h中:#import#import"FooClass.h"问题是FooClass.h有#import"FooLibrary.h".因此,当我编译时,我会遇到数百个错误,例如:“枚举器的重新定义”和“属性具有先前的定义”以及“重复的协议(protocol)定义”和“Typedef重新定义”如何避免这种情况?这似乎只是我遇到的一个愚蠢的心理障碍,但我无法克服它,所以我在这里问。PartiallyFinite建议我注意#include我在项目范围内进行了搜索,但我根本没有使用它。图书馆里有几本

ios - 从协议(protocol)扩展调用选择器

我正在构建简单的主题引擎,并且想要一个将UISwipeGestureRecognizer添加到UIViewController的扩展这是我的代码:protocolThemeable{functhemeDidUpdate(currentTheme:Theme)->Void}extensionThemeablewhereSelf:UIViewController{funcswitchCurrentTheme(){Theme.switchTheme()themeDidUpdate(Theme.currentTheme)}funcaddSwitchThemeGestureRecognizer(

swift 。 unowned 只能应用于类和类绑定(bind)协议(protocol)类型。弱工作正常

请将问题读到底,因为它似乎与许多类似的问题重复,但事实并非如此。大多数其他问题使用带有let关键字的闭包来捕获对象初始化之前的弱或无主self。我没有。我的代码:classSingleton:ObserverProtocol{staticletshared=Singleton()privateletobs:Observer=Observer.init()privateinit(){self.obs.responder=self}funcobserve(_object:Any){}fileprivateclassObserver:NSObject{unownedvarresponder:

协议(protocol)中常量的快速初始化

在Java中,您可以在接口(interface)中初始化最终静态字符串。Swift有方法吗?例如:protocolStaticStringProtocol{//ERROR:Immutablepropertyrequirementmustbedeclaredas'var'witha'{get}'specifierstaticletstaticStringInProtocol="staticStringInProtocol"}extensionStaticStringProtocol{//ERROR:Staticstoredpropertiesnotsupportedinprotocole

ios - 仅在符合协议(protocol)时才进行 Swift 类扩展

是否可以提供一个扩展,只向符合协议(protocol)的类添加功能?我要实现的功能是这样的:protocolIdentifiable{varid:String{get}}classModel{funcreport(data:String){...}}classThing:Model,Identifiable{varid:String...}classPlace:Model,Identifiable{varid:String...}extension(Model+Identifiable){funcidentifiy(){report("\(self.id)")}}//Invalid:M

ios - Swift 协议(protocol)符合 : Candidate has non-matching type

我试图用AnyObject类型的某些属性定义一个协议(protocol),然后在符合该协议(protocol)的类中,属性类型是SomeClass。但是,这返回了编译器错误。我不得不将类中的类型更改为AnyObject。如何在协议(protocol)定义中使用父类(superclass)并将子类用作属性类型?谢谢!protocolTestProtocol{varprop:[AnyObject]{get}}classTest:TestProtocol{varprop=[SomeClass]()//compilererrorvarprop=[AnyObject]()//thiswillwo

ios - 使用基于协议(protocol)或基类的通用参数值将子类上的方法调用到 UITableViewCell

我想简化UITableViewCell子类中“设置”方法的调用。然而,并非所有设置方法都相同,但它们的参数继承自同一类型。是否可以使用泛型或协议(protocol)不必每次都强制转换参数?首先,我使用这样的cellForRow方法:classDataSource:NSObject,UITableViewDataSource,UITableViewDelegate{vardataCollection:TableViewDataCollection!varviewModel:VM!functableView(_tableView:UITableView,cellForRowAtindexP

swift - Swift 协议(protocol)方法的奇怪行为

在使用具有相同名称和参数类型但不同命名参数的可选方法的协议(protocol)时,在swift中偶然发现了一个奇怪的行为。如果我在我的类中不实现或同时实现这两个方法,一切都会正常,但是一旦我注释掉一个方法,swift就会提示:"Method'myProtocol(foo:)'hasdifferentargumentnamesfromthoserequiredbyprotocol'MyProtocol'('myProtocol(bar:)')"我期望的行为是我可以实现协议(protocol)方法的任意组合(只有两者之一,两者都有或没有),因为这两种方法都被定义为可选的。这里有一个演示问题

swift - self 协议(protocol)的行为

我最近在读Protocols,GenericTypeConstraintsandArraysinSwift.我的问题涉及博客中的以下两个示例:代码:protocolMyProtocol1{varmyValue:Self{get}}letarray:[MyProtocol1]=[]//Error.产生错误:Protocol'MyProtocol1'canonlybeusedasagenericconstraintbecauseithasSelforassociatedtyperequirements.这是预料之中的,并且已经有几个关于该主题的SO问题。但是,通过将myValue更改为函数