草庐IT

compact_protocol

全部标签

ios - Swift 委托(delegate)和协议(protocol)不起作用

我需要我的ViewController中的步进器从我的其他类手动更新。变量在我的第二节课中更新,但步进器不会像他们想象的那样重置。我认为我错误地调用了我的委托(delegate)。ViewController:classViewController:UIViewController,CircleViewDelegate{varcolors=CircleView()@IBOutletweakvarcircleView1:CircleView!@IBOutletweakvarredStepper:UIStepper!@IBOutletweakvarredValue:UILabel!@IBA

objective-c - 协议(protocol)真的是父类(super class)的替代品吗?

我观看了来自WWDC15的面向协议(protocol)的编程视频。看到这个视频后,我很困惑。谁能给我一个相关的例子来说明这个想法?此外,协议(protocol)扩展是对运算符重载的真正替代。 最佳答案 在动态类型语言(Ruby、Python、Javascript等)中有“ducktyping”的概念,本质上说对象的实际类型是什么并不重要,只要它响应特定的方法。而不是检查instance_of?,你可以查看responds_to?当您使用检查来确定是否可以调用方法时,这更相关。协议(protocol)只是鸭子类型的正式声明。由于您要求

swift - 在 Swift 类的泛型中使用协议(protocol)数组

有什么方法可以使用协议(protocol)的泛型数组吗?例如,/*Iwanttouseprotocollikebelow,*butIcan'tbecauseprotocolisnotconcrete*socannotmakearrayofit*/classMyClass{letresult:T}protocolMyProtocol{init(with:String)}classSpecialThing:MyProtocol{letappleWatch:AppleWatchinit(with:String){self.appleWatch=AppleWatch(with)}}classS

xcode - 如何在 Xcode 中自动实现协议(protocol)方法?

我在eclipse上编程的时候,记得有一个自动实现接口(interface)方法的选项(先在类中实现接口(interface),然后在类体中鼠标右键实现方法)。在Xcode中是否有任何类似的选项可以自动实现协议(protocol)方法?我认为这可能是一个很酷的功能,可以节省很多时间......非常感谢所有对我的问题有任何“解决方案”的人。 最佳答案 与Eclipse不同,但您可以在配置后利用XCode代码片段功能......参见https://github.com/burczyk/XcodeSwiftSnippetshttp://n

ios - Protocol 只能用作泛型约束,因为它有 Self 或关联类型要求

我有这个协议(protocol):protocolViewType{associatedtypeT:ViewData.Viewvardata:T!{getset}}ViewData.View是一个类我有一个名为TemplateLabel的类,它继承了UILabel并符合ViewTypeclassTemplateLabel:UILabel,ViewType{vardata:ViewData.View.Label!}我从Storyboard中获取此TemplateLabel作为UIView并尝试将UIView转换为ViewType以分配它的data属性letview=SB.instanti

swift - 不符合协议(protocol)的属性(property)去哪儿了?

Teacher&TeamMate是两个协议(protocol)。Coach类符合这些协议(protocol)。protocolTeacher{varfirstName:String{get}varlastName:String{get}vartitle:String{get}}protocolTeamMate{varfirstName:String{get}funcrole()}classCoach:Teacher,TeamMate{varfirstName:StringvarlastName:Stringvartitle:Stringfuncrole(){print("coachth

ios - 面向协议(protocol)编程,隐式调用扩展方法

我第一次接触POP。在这种情况下,我想装饰一些UIViewController,以便它们自动引发“页面已查看”分析事件。所以我创建了一个协议(protocol),以及该协议(protocol)的扩展:protocolReportPageViewedEvent{funcreportPageViewed()varpageName:String?{getset}}extensionReportPageViewedEventwhereSelf:UIViewController{funcreportPageViewed(){guardletpageName=self.pageNameelse{f

swift 3 : Converting enum case with associated value to closure with protocol parameter results in a compiler error

我有一个枚举,其关联值为结构。当我编写这段代码时,它编译没有错误:protocolMyProtocol{}structMyAssociatedValue:MyProtocol{}enumMyEnum{casemyCase(MyAssociatedValue)}funcmyEnumClosureMapping()->(MyAssociatedValue)->MyEnum{returnMyEnum.myCase}但是我添加了另一个这样的函数:funcmySecondEnumClosureMapping()->(MyProtocol)->MyEnum{returnMyEnum.myCase}

swift - 类型 'NSFastEnumerationIterator.Element'(又名 'Any')不符合协议(protocol) 'AnyObject'

我正在尝试将我的应用程序更新到Swift3.0,但遇到了错误:Type'NSFastEnumerationIterator.Element'(又名'Any')不符合协议(protocol)'AnyObject'在线:self.friends.append(Friend(userName:(detailDataasAnyObject).value["userName"]as!String,phoneNumber:detailData.value["phoneNumber"]as!String,status:"Friend",statusSort:2,name:detailData.val

objective-c - 在 Swift 类中实现 Objective-C 协议(protocol)

我有一道理解题。我想在iOSSwift应用程序中使用DropboxObjective-C框架。我已经成功导入了框架并在桥接header中设置了导入子句。我还能够运行授权过程,所以我认为该框架有效。然后我尝试使用声明为协议(protocol)的框架组件:classViewController:UIViewController,DBRestClientDelegate{}我设置了delegate属性,调用了loadMetadata方法并实现了相应的事件函数:letdbRestClient=DBRestClient(DBSession.shared())dbRestClient.delega