草庐IT

UIApplicationDelegate_Protocol

全部标签

ios - 关于在 Swift 中采用 Objective-C 协议(protocol)的困惑

我对Swift比较陌生,但对Objective-C有经验。我正处于将Swift集成到现有的基于Objective-C的应用程序的初始阶段。我用Swift编写了一个类来模仿我们现有类之一的行为。在新的Swift类中,我实现了一个用Obj-C编写的协议(protocol)。在协议(protocol)中有一个必需的方法定义如下:-(NSString*)getWName;在我的Swift类中,我按如下方式实现了它:funcgetWName()->String!{return"somestring"}方法签名是XCode代码补全产生的。所以这是我的问题:在Swift中,String不是对象,但N

swift - 这是一个正确的例子来展示 Swift 面向协议(protocol)设计的好处吗?

这个问题可能非常错误,我想达到的结果也可能很不明确。我是编程初学者,请指正我的错误理解。通过您的指正,我会学到很多东西。在Session408的06:00WWCD15的视频,Crusty提示的类的三大牛之一是“自动共享!”swift的面向协议(protocol)的特性可以很好的解决这个问题。下面是我自学时写的代码protocolpooPro{vara:Int{get}varb:Int{get}varc:Int{get}}extensionpooPro{funcpooFun()->Int{return(a+b+c)//FunctionA}}structbluePrint:pooPro{v

ios - Swift AppDeligate 不符合协议(protocol) 'MessagingDelegate'

使用Swift2.3和Xcode8我将Firebase升级到版本4我遵循了新版本中提到的所有更改https://firebase.google.com/docs/reference/ios/naming-migration-guide#changes_in_the_new_version我仍然得到一个错误提示Type'AppDelegate'doesnotconformtoprotocol'MessagingDelegate'我不知道这个方法改变了什么或者我需要添加哪个新方法。请帮助我classAppdelegate:UIResponder,UIApplicationDelegate,

swift - 符合通用协议(protocol)方法返回 PAT

我想声明类似于以下的通用协议(protocol):protocolFactory{funccreateWidget(_t:T)->TWidgetwhereTWidget:Widget,TWidget.T==T}protocolWidget{associatedtypeTfuncget()->T}我希望我可以实现Factory的具体变体,通过隐藏实现返回它们自己的具体和不透明的Widget。这是一个构建失败的示例实现:structConcreteFactory:Factory{funccreateWidget(_t:T)->TWidgetwhereTWidget:Widget,TWidg

ios - 带有类型别名的协议(protocol)中的 AssociatedType

假设我有一个协议(protocol):protocolRouter{associatedtypeAnswertypealiasAnswerCallback=(Answer)->Void}有时我想存储一个AnswerCallback类型的变量varanswerCallback:Router.AnswerCallback...但我需要指定我正在使用的具体类型,因为我收到此错误:Typealias'AnswerCallback'canonlybeusedwithaconcretetypeorgenericparameterbase如何指定Router.AnswerCallback之类的类型.

swift - 为什么 Swift 协议(protocol)中的变异方法会无限递归,除非只有扩展方法?

我在SR-142onbugs.swift.org中遇到了以下代码.如果一个协议(protocol)有一个正在变异的扩展方法,类实例可以毫无问题地调用变异函数。//protocoldefinitionprotocolP{}extensionP{mutatingfuncm(){}}//classconformingtoPclassC:P{//redeclarem()withoutthemutatingqualifierfuncm(){//callprotocol'sdefaultimplementationvarp:P=selfp.m()}}letc=C()c.m()如果我做一个小改动,将

swift - 如何创建具有通用函数扩展类型的协议(protocol)

我正在尝试做一个带有通用函数的协议(protocol),其中T不仅等于类型,而且扩展了它。classMainItem{}classItem1:MainItem{}classItem2:MainItem{}protocolMyProtocol{funcmyFunc()->T//TextendsMainItem}classClassA:MyProtocol{funcmyFunc()->Item1{//notMainItemreturnItem1()}}classClassB:MyProtocol{funcmyFunc()->Item2{//notMainItemreturnItem2()}

swift - 无法将 Swift 对象向下转换为协议(protocol)——怎么办?

这个问题在这里已经有了答案:SwiftGenericsissue(3个答案)关闭8年前。我正在尝试为Array编写一个类似于NSArray的containsObject方法的扩展方法。这是我尝试过的:extensionArray{funccontains(item:T)->Bool{forvalueinself{ifitem==value{returntrue}}returnfalse}}我在行ifitem==value{上收到一个错误,上面写着:"Couldnotfindanoverloadfor"=="thatacceptsthesuppliedarguments."我尝试在比较之

arrays - Swift 数组标识 "Type does not conform to protocol ' AnyObject'"错误

我创建了Playground并编写了这段代码:vara=[1,2,3]varb=aa===bPlayground给我错误Type'[Int]'doesnotconformtoprotocol'AnyObject'。我做错了什么?我正在使用XCode6GMSeed。更新此代码摘自“TheSwiftProgrammingLanguage”一书,其中指出:“Checkwhethertwoarraysorsubarrayssharethesamestorageandelementsbycomparingthemwiththeidentityoperators(===and!==).”在“类和结

objective-c - Swift 协议(protocol)可以定义为动态的吗?

我已经转换了mostofmyapplicationtoSwift.剩下的是一些Objective-C协议(protocol),以及一些应该使用Swift习语代替Objective-C风格的代码。我已经使用Typhoon组装了我的应用程序.现在,在将其中一个协议(protocol)转换为Swift之后,我注意到初始化器不再是动态的(DI库需要)。所以我尝试将其显式标记为动态,但出现以下错误:它提示第三个参数(我的Swift协议(protocol))永远不能作为Objective-C的一部分参与。这似乎是Swift/ObjC互操作性的普遍限制。是在ObjC中定义协议(protocol)并让