草庐IT

UIApplicationDelegate_Protocol

全部标签

swift - Swift 上的协议(protocol)和组合

我正在尝试了解有关协议(protocol)的更多信息,但在不了解以下代码段的情况下就卡住了。主要是为好的文章和解说片寻求一些光明和方向。在Apple图书馆的一个示例中,协议(protocol)所做的不仅仅是确保类符合它。它们允许一个类中的对象访问其他类中的方法,而无需使用传统的类继承定义。Dice类上的这行代码letgenerator:RandomNumberGenerator允许Dice类型的vard6访问一个函数funcrandom()->Double在Dice范围之外,在LinearCongruentialGenerator范围内,并且正在使用RandomNumberGenera

ios - Swift 性能和 CustomStringConvertible 协议(protocol)

在这里,我尝试对我的distinct函数进行基准测试,该函数接收随机对象数组并返回不同的数组,方法是通过phoneNumber属性删除重复项:当我为我的Person类实现CustomStringConvertible协议(protocol)时,奇怪的事情发生了——任务花费的时间增加了3倍(请参阅最后一行的耗时)我从不打印任何Person对象,所以我看不到descriptionvar被访问21000次的明显原因。以下是我未实现CustomStringConvertible协议(protocol)时的结果:性能下降的原因是什么? 最佳答案

swift - 在 Swift 中使用 Container 查看另一个 ViewController 时按协议(protocol)传递数据

我开始研究thisquestion应用程序。我从类别的tableView开始:对于数据交换,我决定使用一个协议(protocol):protocolCategory{funcdata(object:AnyObject)}在第一个ViewController中有如下代码:classViewController:UIViewController{varitems:[String]=["Desktop","Tablet","Phone"]letCategoriesData:Category?=niloverridefuncviewDidLoad(){super.viewDidLoad()Ca

swift - Swift 中的类内部协议(protocol)

如何在Swift中实现类内部协议(protocol)?问题是classC{privateprotocolP{funcaFunction()}privateclassD:P{funcaFunction(){//...}}}导致错误Declarationisonlyvalidatfilescope有什么绕过这个问题的想法吗?排除:我不引用class-onlyprotocols,这当然是可能的。 最佳答案 swift中的访问控制是基于文件的。我不认为您可以在类中定义协议(protocol),但可以将其包含在同一文档中。privatepro

Swift:在类中声明协议(protocol)

在java中我有:publicclassEvent{publicenumState{PENDING,UPCOMING,ACTIVE,FINISHED,FAILURE}publicinterfaceCallback{voidonUpdated();voidonStateChanged(Statestate);}privateStatestate;privateCallbackmCallback;}如何在Swift中创建类似的东西?好像我不能在类中声明协议(protocol)。但是当我在外面声明协议(protocol)时,我无法访问State枚举。谢谢。我想要一个类似的东西classEve

swift - 使用协议(protocol)扩展在外部点击时关闭键盘

在我的项目中,我有几个ViewController,它们是UITableViewController、UIViewController的子类,我想在每个ViewController上实现此行为:Whenusertapsoutsideofatextfielditshoulddismissthekeyboardwhichwasvisiblewhenusertappedinsideit.我可以通过定义一个点击手势识别器并关联一个选择器来关闭键盘来轻松实现它:classMyViewController{overridefuncviewDidLoad(){super.viewDidLoad()c

swift - 为什么建议在 Swift 协议(protocol)中使用 static 作为属性要求的前缀?

在SwiftdocumentationsectionaboutProtocols,它写道:Alwaysprefixtypepropertyrequirementswiththestatickeywordwhenyoudefinetheminaprotocol.Thisrulepertainseventhoughtypepropertyrequirementscanbeprefixedwiththeclassorstatickeywordwhenimplementedbyaclass我不明白你是应该总是还是只在特定情况下这样做(因为在后面的文档中,static并不总是存在)。为什么推荐使

ios - 协议(protocol)扩展中的 Swift 闭包

当从另一个类(例如网络状态管理器)调用setInteractionEnabled方法时,我想装饰UIViewController以调整它的界面。应通过覆盖onInteractionChanged在具体Controller中提供所有更改(如果有)。这是我的代码:importFoundationtypealiasInteractionClosure=((enabled:Bool)->Void)protocolInteraction:class{varonInteractionChanged:InteractionClosure?{getset}funcsetInteractionEnabl

Swift:协议(protocol)变量的反射

我有一个带有一些{get}和{getset}变量和扩展的协议(protocol),我在其中设置前者,并在初始化类时设置后者。我想在字典中返回所有这些,即:protocolSomeProtocol{varid:Int{get}varname:String{getset}varisItTrue:Bool{get}}extensionSomeProtocolwhereSelf:SomeClass{varid:Int{return1}varisItTrue:Bool{returntrue}funcclassProps(){vardict=[String:AnyObject]()letmirro

ios - 如何从 Swift 中的协议(protocol)扩展覆盖实例方法?

这个问题在这里已经有了答案:Implementprotocolthroughextension[duplicate](1个回答)关闭6年前。我试图从协议(protocol)扩展覆盖实例方法,但我遇到了一些麻烦。对于上下文,我正在制作一个包含许多不同UICollectionView的iOS应用程序。这些View从不同的数据库获取数据(需要不同的回调函数)并且具有非常不同的布局。因为(数据库、布局)的任意组合都是可能的,所以如果没有大量代码重复,就很难创建一个漂亮的OOP类层次结构。我的想法是将布局函数(主要是那些在UICollectionViewDelegateFlowLayout协议(