草庐IT

UIApplicationDelegate_Protocol

全部标签

cocoa - 使 Swift 类符合需要 init 的协议(protocol)

我在Swift中有以下协议(protocol):protocolFooConvertible{typealiasFooTypeinit(foo:FooType)}我可以让Swift类在类定义中符合它:classBar:FooConvertible{varbaz:String=""requiredinit(foo:String){baz=foo}}到目前为止一切顺利。但是,当我尝试在扩展中使一个类符合它时,问题就出现了(对于Cocoa类,这是我唯一的选择,因为我没有源代码):classBaz{varbaz=""}extensionBaz:FooConvertible{requiredco

ios - 未调用 GKLocalPlayerListener 协议(protocol)

正如苹果指南所说;我在我的游戏中心类中实现了GKLocalPlayerListener协议(protocol),并在本地玩家通过身份验证后立即将其添加为监听器:funcauthenticationChanged(){if(GKLocalPlayer.localPlayer().authenticated&&!self.userAutenticated){println("Authenticationchanged:playerauthenticated.")userAutenticated=trueGKLocalPlayer.localPlayer().unregisterAllLis

ios - 无法声明具有内部要求的公共(public)协议(protocol)扩展

我正在编写一个媒体播放器应用程序,并创建了我自己的框架来管理所有播放器功能。在这个框架中,我有一个名为PlayerControllerType的公共(public)协议(protocol)和一个内部协议(protocol)_PlayerControllerType。在PlayerControllerType中,我声明了所有方法和属性,它们应该可以从框架外部访问。在_PlayerControllerType中,我定义了几个属性,框架内实现PlayerControllerType的具体类型使用这些属性。其中一种类型是PlayerController。其声明如下:publicclassPla

swift - 在 Swift 中,为什么子类方法不能覆盖父类(super class)中协议(protocol)扩展提供的方法

我知道这个问题的标题令人困惑,但下面的示例解释了奇怪的行为:protocolProtocol{funcmethod()->String}extensionProtocol{funcmethod()->String{return"FromBase"}}classSuperClass:Protocol{}classSubClass:SuperClass{funcmethod()->String{return"FromClass2"}}letc1:Protocol=SuperClass()c1.method()//"FromBase"letc2:Protocol=SubClass()c2.m

实现另一个具有共享关联类型的协议(protocol)的 Swift 协议(protocol)扩展

考虑以下几点:protocolFoo{typealiasAfunchello()->A}protocolFooBar:Foo{funchi()->A}extensionFooBar{funchello()->A{returnhi()}}classFooBarClass:FooBar{typealiasA=Stringfunchi()->String{return"helloworld"}}此代码编译。但是,如果我注释掉关联类型typealiasA=String的显式定义,那么出于某种原因,swiftc无法推断类型。我感觉这与共享相同关联类型但没有直接断言的两个协议(protocol)有

swift - 符合通用协议(protocol)的多个实例

我有一个带有关联类型的Swift协议(protocol)MessageHandler,一些不同的Message类型,还有一个类X:protocolMessageHandler{associatedtypeMessagefunchandle(message:Message)}classFooMessage{}classBarMessage{}classX{}现在如何让X能够同时处理FooMessages和BarMessages?试试这个:extensionX:MessageHandler{typealiasMessage=FooMessagefunchandle(message:FooM

带有 Protocol.Type 的 Swift 泛型

我对Swift中的泛型有疑问(3):我从服务器获取实现相同协议(protocol)的不同类的不同数据,我需要将它们放入具有泛型的类中(例如数组)。我不知道数据是哪个类,所以我需要使用协议(protocol)。所以我有以下结构:我的协议(protocol):protocolMyProtocol{//someprotocolstuff}一些实现协议(protocol)的类classMyProtocolImpl1:MyProtocol{//someclassstuff}classMyProtocolImpl2:MyProtocol{//someclassstuff}....泛型类:final

ios - 语句 "public typealias AnyObject"如何使 AnyObject 成为协议(protocol)?

当我按下Command并单击AnyObject导航到AnyObject的界面时,我遇到了以下定义:publictypealiasAnyObject我看到这条评论写在定义之上:Theprotocoltowhichallclassesimplicitlyconform.好吧,我不明白这个定义如何在没有显式使用关键字protocol的情况下使AnyObject成为protocol。此外,它是一个没有=someType的typealias,这是一个无效的语句。我不能写这样的声明:publictypealiasSomeOtherObject它给出了一个编译错误。谁能解释一下这里到底发生了什么?

ios - Swift 2.0 中的协议(protocol)扩展方法分派(dispatch)

我遇到了有关协议(protocol)方法分派(dispatch)的问题。我有一个看起来像这样的类层次结构:protocolE{functest()}extensionE{functest(){print("jello")}}classA:E{}classB:A{functest(){print("hello")}}但是当我调用类B的实例上的test静态强制键入A时,打印的是“jello”,而不是“你好”。letb:A=B()//prints"jello"not"hello"b.test()我的理解是test打印“jello”的方法被“集成”到A的实例中(因为A符合E协议(protoco

arrays - 如何检查 `Any` 类型的对象是一个实现某些协议(protocol)的具体类的数组

我遇到了一个问题。假设我有一个协议(protocol)和两个实现它的类:protocolInitiatable{init()}classA:Initiatable{requiredinit(){}}classB:Initiatable{requiredinit(){}}然后在某个时候我正在创建一个数组并将其传递给函数:vararray=[A]()funcupdate(object:Any){}update(object:array)从那个函数update我想将object传递给另一个函数,如果它满足另一个函数的条件:funcprocess(array:T){/*...*/}那么我如何检