jjzjj

Protocols

全部标签

objective-c - 以协议(protocol)为参数的 ObjC 泛型集合被翻译为 [AnyObject]

为什么protocols属性在swift中被翻译成[AnyObject],而不是[P]@protocolP;@classC;@interfaceTestGenerics:NSObject@propertyNSArray*classes;@propertyNSArray*protocols;@end在Swift中它看起来是这样的:publicclassTestGenerics:NSObject{publicvarclasses:[C]publicvarprotocols:[AnyObject]}更新:找到解决方案@propertyNSArray*>*protocols;或者喜欢建议的ne

ios - Swift ExpressibleByIntegerLiteral - 它究竟是如何工作的?

摘自iOs10编程基础:“因为Nest采用ExpressibleByIntegerLiteral,我们可以在预期嵌套的地方传递一个Int,我们的init(integerLiteral:)将被自动调用......”structNest:ExpressibleByIntegerLiteral{vareggCount:Int=0init(){}init(integerLiteralval:Int){self.eggCount=val}}好吧,我的问题是……它是如何自动调用的??当我试图找出原因时,我的逻辑遇到了障碍。据我所见,您可以说:vareggie:Nest=5但是...好吧,等号后的数

swift - 协议(protocol) associatedType 和 <>

在swift协议(protocol)中使用genericwithfunction或使用associatedType有什么区别?protocolRepository{associatedtypeTfuncadd(data:T)->Bool}和protocolRepository{funcadd(data:T)->Bool} 最佳答案 定义的关联类型使符合强类型协议(protocol)的类。这提供了编译时错误处理。另一方面,泛型使得符合协议(protocol)的类更加灵活。例如:protocolAssociatedRepository{

swift - 需要通过使用需求的特定子类(或符合它的类型)来满足 Swift 协议(protocol)需求

我有一个我创建的协议(protocol)(在Swift4.2中),它的要求之一是一个与协议(protocol)本身类型相同的属性。例如,我有一个这样定义的协议(protocol):protocolA{vara:A?{getset}}我有几个符合这个协议(protocol)的模型:classModel1:A{vara:A?}classModel2:A{vara:A?}对于我的一个模型,我需要通过更具体地定义变量a的属性(即具有协议(protocol)类型的变量)来满足协议(protocol)要求。因此,例如我可能希望将Model2实现为:classModel2:A{vara:Model1

swift - swift 中的下标和协议(protocol)

我正在定义一个协议(protocol),出于抽象目的,它有一个带有getter和setter的“下标”函数。然后我定义了一个实现该协议(protocol)的类。问题的简短版本:如果我在类的对象上使用下标(作为左值,因此使用setter),一切都按预期工作。如果我对刚刚声明的协议(protocol)类型的对象执行此操作,我会收到“无法分配给该表达式的结果”错误。长版。我有一个国际委员会。板是一个二维矩阵。我通过BoardType协议(protocol)公开Board类型。protocolBoardType{varwidth:Int{get}varheight:Int{get}subscr

swift - 通用功能中未识别协议(protocol)一致性

如果我对这个问题有任何见解,我将不胜感激。我正在尝试在Swift中创建一个通用函数,它接受任何符合特定协议(protocol)的类型。但是,当我将一个一致的类型传递给此方法时,我收到一个编译器错误,指出该类不符合。这是我的协议(protocol):protocolSettableTitle{staticfuncobjectWithTitle(title:String)}这是我创建的一个符合此协议(protocol)的类:classFoo:SettableTitle{staticfuncobjectWithTitle(title:String){//Implementation}}最后,

ios - Swift 将泛型类型限制为 Type

如何将泛型类型限制为类型,而不是类型的实例?如果我有一个类:classSomeClass{}我怎样才能确保T只是AnyClass的一个实例(这只是AnyObject.Type)我的协议(protocol)只有静态方法,为了调用这些方法我必须做instance.dynamicType.protocolMethod而我想做someType.protocolMethod 最佳答案 据我所知,Swift不允许您将元类型用作泛型。(我相信这符合SamGiddinswishedforinSwift3的思路。)但是,您可以将其用作值。不要将T设为

协议(protocol)和泛型类型中的 Swift 类型别名

我有一个协议(protocol),它有一个类型别名:protocolFooable{typealiasT:EquatablefuncmakeFoo()->T}我希望所有符合它的类型都将从makeFoo返回Equatable值。现在我想做一个数组扩展,它存储Fooable值:extensionArraywhereElement:Fooable{funcarrayFoo(array:Array,transform:(Element,[F])->S)->[S]{我希望给定数组A,其中包含Fooable元素和数组B,其中包含Fooable元素,我可以制作:a.arrayFoo(b,{...})

ios - 类扩展崩溃中的 Swift NSNotificationCenter 观察者

我试图创建一种通用机制,可以对iOS中的键盘显示和隐藏使用react。我想出了一个简单的协议(protocol)及其扩展,它不包含真正的动画,而是从采用该协议(protocol)的对象中提取它们:importUIKitprotocolKeyboardAnimatable{funckeyboardWillShowAnimation()->(()->Void)?funckeyboardWillHideAnimation()->(()->Void)?}extensionKeyboardAnimatablewhereSelf:UIViewController{funcsetupKeyboard

ios - 在 Argo 中解码泛型

我正在使用Thoughtbot的Argo框架将JSON对象解析为模型。我遇到了一个问题,我有这样的协议(protocol)及其扩展protocolSomeProtocol{associatedtypeModelfuncfoo()}extensionSomeProtocolwhereModel:Decodable{funcfoo()->Model?{//someJSONisAnyObjectinthiscase,say,fromanetworkcallguardletmodel:Model=decode(someJSON)else{returnnil}returnmodel}}符合这个协