草庐IT

SMB1Protocol

全部标签

swift - 我什么时候应该使用 class-only 协议(protocol)而不是 @objc?

当我们想将协议(protocol)采用限制为类类型时,我们可以使用:class协议(protocol)或@objc协议(protocol)。但是,我没有看到“仅类协议(protocol)”相对于@objc协议(protocol)的优势。我知道的区别:大小@objc更节省空间。@objcprotocolProtocolObjC{}protocolProtocolClass:class{}sizeof(ProtocolObjC)//->8sizeof(ProtocolClass)//->16检查协议(protocol)一致性仅适用于@objc协议(protocol)@objcprotoco

class - Swift:属性是实现协议(protocol)的 UIView 子类

这是场景。我有许多不同的View要显示,具体取决于我向用户显示的模型对象。所以我已经建立了一个协议(protocol),任何实现它的View都可以呈现。classMyItem{/*somemodelproperties*/}protocolItemView:class{//someprotocolmethods(e.g.updateWithItem(),etc)funcsetupItem(item:MyItem)}classSpecificItemView:UIView,ItemView{/*therewillbemultipleclasseslikethis*/funcsetupIt

objective-c - Swift:实现协议(protocol)的类的类型

这个问题在这里已经有了答案:InSwift,howcanIdeclareavariableofaspecifictypethatconformstooneormoreprotocols?(5个答案)关闭6年前。在Objective-C中,您可以在返回值中同时指定类名和一组协议(protocol)。例如,一个UIViewController是一个UIScrollViewDelegate:-(UIViewController*)viewDelegate;我找不到在Swift中表达这一点的方法。这样的事情失败了,因为UIViewController不是协议(protocol):funcvie

ios - NSManagedObject 子类实现具有所需 init 的协议(protocol)的 Swift 链接器错误

我在开始的Swift项目中遇到问题。我使用Alamofire进行网络连接,使用MagicalRecord作为CoreData的包装器。我不知道这是否重要,但我还是要提一下。设置应用程序正在从JSONAPI检索数据。使用Alamofire'sGenericResponseObjectSerialization我创建了Alamofire.Request的扩展,如链接页面所示,并实现了以下协议(protocol):@objcpublicprotocolResponseObjectSerializable{init?(response:NSHTTPURLResponse,representat

ios - 带有 UIButtons 的下拉列表的 UIView 类 - 委托(delegate)/协议(protocol)问题?

我正在尝试在ViewController中创建自定义下拉列表。将有5个下拉列表,每个列表将有4个选项。由于列表的数量,我决定制作一个UIView,其中每个列表都有UIButtons形式的四个选项。现在我只是想弄下来一个;因此,以下代码适用于包含五个选项的一个下拉列表(包括选定的一个,我将在下面进一步解释)。基本上我想要的是有一个按钮显示所选值(或启动时的默认值),然后当您单击该值时,包含4个按钮(也称为下拉列表)的UIView显示在原始按钮。当用户单击其中一个按钮时,我希望具有所选值的按钮具有被单击按钮的标题。我遇到了以下问题:我希望能够将四个按钮的标题从ViewController传

class - 带有 NSBundle 的段错误 11(对于类 :) and multiple type constraint (protocol + class)

以下代码在模拟器中运行良好,但在创建存档时抛出“Commandfaileddutosignal:Segmentationfault:11”。funcpopAction(){MyViewController.pop(self)}classfuncpop(controller:T){letbundle=NSBundle(forClass:controller.dynamicType)//…}下面的编译就好了:letbundle=NSBundle(forClass:object_getClass(self))//orletbundle=NSBundle(forClass:self)dynam

arrays - 协议(protocol)实例数组不适用于 contains 方法

这个问题在这里已经有了答案:Findindexofobjectinanarrayoftype[SomeProtocol](2个答案)关闭7年前。我有一个协议(protocol),用于定义构成笔记内容的内容。一条笔记可以有许多不同的内容类型,因此协议(protocol)似乎是最好的方式。publicprotocolContent{varcontentType:String{get}}然后我有一个该协议(protocol)的实现publicclassPlainTextContent:Content{publicvarcontentType:String{return"PlainText"}

ios - Swift 中的协议(protocol)和委托(delegate)

我正在尝试在Swift中创建一个协议(protocol)和一个委托(delegate),但我遇到了一些问题。我想在表格View的单元格中有一个切换按钮。这是我的协议(protocol):importFoundationimportUIKitprotocolCellProtocol{funconSwitchToogle(sender:AnyObject,onCell:UITableViewCell)}这是我的单元格类:importUIKitclassCell:UITableViewCell{@IBOutletweakvarlabel:UILabel!@IBOutletweakvarfla

ios - 如何创建特定类型的对象数组,符合 Swift 2 中的协议(protocol)

我的问题很简单,希望只是语法问题。我正在尝试创建一个符合我的协议(protocol)的UIViewControllers数组。我能够将此要求创建为函数参数:funcdoSomething(controller:T){...}现在,我想将这些对象存储在一个数组中,我希望我可以有这样的东西:varviewControllers=Array()但是,我不知道如何在数组上创建此约束。这是可能的还是我的做法有误? 最佳答案 你最好的选择可能是使用一个只有你的类符合的协议(protocol),并使用这个协议(protocol)来约束你的类型:p

objective-c - Swift 不符合 Objective-C 协议(protocol)

所以我正在尝试遵循wsdl2code的教程,他们在应用程序委托(delegate)中实现了obj-c协议(protocol)(整个项目都在objective-c中)。我试图快速重新创建它,但我一直被告知我不符合协议(protocol)。我已确保方法的swift版本中使用的类型正确地从objective-c切换到swift。这是objective-c头文件#ifndef_Wsdl2CodeProxyDelegate#define_Wsdl2CodeProxyDelegate@protocolWsdl2CodeProxyDelegate//ifservicerecieveanerrorth