草庐IT

Protocols

全部标签

Swift:符合特定类并同时符合多种协议(protocol)的属性

在Objective-C中,可以这样写:@property(retain)UIView*myView;但是我如何快速编写这段代码呢?我已经知道如何使一个属性符合许多协议(protocol),但它不能通过使用继承来工作:varmyView:???protocol编辑:我使用了许多UIView子类型,例如UIImageView、UILabel或其他,我需要使用一些UIView属性加上协议(protocol)中定义的一些方法。在最坏的情况下,我可以创建一个具有所需属性的UIViewProtocol,但我知道是否可以在Swift中声明一个属性/变量,其中包含一个类型和一些协议(protocol

Swift:符合特定类并同时符合多种协议(protocol)的属性

在Objective-C中,可以这样写:@property(retain)UIView*myView;但是我如何快速编写这段代码呢?我已经知道如何使一个属性符合许多协议(protocol),但它不能通过使用继承来工作:varmyView:???protocol编辑:我使用了许多UIView子类型,例如UIImageView、UILabel或其他,我需要使用一些UIView属性加上协议(protocol)中定义的一些方法。在最坏的情况下,我可以创建一个具有所需属性的UIViewProtocol,但我知道是否可以在Swift中声明一个属性/变量,其中包含一个类型和一些协议(protocol

ios - 在 Xcode 中自动实现 Swift 协议(protocol)方法

我刚开始使用swift语言,来自java,到目前为止它看起来很棒。但我真的错过了一些东西:Eclipse有一个很棒的功能,当我添加“implementsXYZ”时,它为我提供了一个功能来自动实现必要的函数stub。这可以节省大量时间。Xcode好像没有这个功能,还是我遗漏了什么?我找到了accessorize插件,但这似乎只适用于ObjectiveC..有解决办法吗?附言。我正在使用Xcode6.1.1 最佳答案 注意:此答案适用于版本9之前的Xcode;在第9版中,Apple添加了自动修复丢失的协议(protocol)方法的功能;

ios - 在 Xcode 中自动实现 Swift 协议(protocol)方法

我刚开始使用swift语言,来自java,到目前为止它看起来很棒。但我真的错过了一些东西:Eclipse有一个很棒的功能,当我添加“implementsXYZ”时,它为我提供了一个功能来自动实现必要的函数stub。这可以节省大量时间。Xcode好像没有这个功能,还是我遗漏了什么?我找到了accessorize插件,但这似乎只适用于ObjectiveC..有解决办法吗?附言。我正在使用Xcode6.1.1 最佳答案 注意:此答案适用于版本9之前的Xcode;在第9版中,Apple添加了自动修复丢失的协议(protocol)方法的功能;

inheritance - Swift——要求实现协议(protocol)的类是某个类的子类

我正在创建几个NSView类,所有这些类都支持一个特殊的操作,我们称之为transmogrify。乍一看,这似乎是协议(protocol)的完美位置:protocolTransmogrifiableView{functransmogrify()}但是,此协议(protocol)不强制每个TransmogrifiableView也是一个NSView。这意味着我在TransmogrifiableView上调用的任何NSView方法都不会进行类型检查:letmyView:TransmogrifiableView=getTransmogrifiableView()lettheSuperView

inheritance - Swift——要求实现协议(protocol)的类是某个类的子类

我正在创建几个NSView类,所有这些类都支持一个特殊的操作,我们称之为transmogrify。乍一看,这似乎是协议(protocol)的完美位置:protocolTransmogrifiableView{functransmogrify()}但是,此协议(protocol)不强制每个TransmogrifiableView也是一个NSView。这意味着我在TransmogrifiableView上调用的任何NSView方法都不会进行类型检查:letmyView:TransmogrifiableView=getTransmogrifiableView()lettheSuperView

swift - 从常规方法调用协议(protocol)默认实现

我想知道是否有可能实现这样的事情。我有一个这样的Playground:protocolFoo{functestPrint()}extensionFoo{functestPrint(){print("Protocolextensioncall")}}structBar:Foo{functestPrint(){//Callingselforsupergocalldefaultimplementationself.testPrint()print("Callfromstruct")}}letsth=Bar()sth.testPrint()我可以在extension中提供默认实现,但是如果Ba

swift - 从常规方法调用协议(protocol)默认实现

我想知道是否有可能实现这样的事情。我有一个这样的Playground:protocolFoo{functestPrint()}extensionFoo{functestPrint(){print("Protocolextensioncall")}}structBar:Foo{functestPrint(){//Callingselforsupergocalldefaultimplementationself.testPrint()print("Callfromstruct")}}letsth=Bar()sth.testPrint()我可以在extension中提供默认实现,但是如果Ba

swift - 如何要求一个协议(protocol)只能被特定的类采用

我想要这个协议(protocol):protocolAddsMoreCommands{/*...*/}仅被继承自UIViewController类的类采用。Thispage告诉我我可以指定它只被一个类(而不是一个结构)通过编写来采用protocolAddsMoreCommands:class{}但我看不出如何要求它只被特定的类采用。Thatpagelater谈论将where子句添加到协议(protocol)扩展以检查一致性,但我也看不出如何调整它。extensionAddsMoreCommandswhere/*what*/{}有没有办法做到这一点?谢谢! 最

swift - 如何要求一个协议(protocol)只能被特定的类采用

我想要这个协议(protocol):protocolAddsMoreCommands{/*...*/}仅被继承自UIViewController类的类采用。Thispage告诉我我可以指定它只被一个类(而不是一个结构)通过编写来采用protocolAddsMoreCommands:class{}但我看不出如何要求它只被特定的类采用。Thatpagelater谈论将where子句添加到协议(protocol)扩展以检查一致性,但我也看不出如何调整它。extensionAddsMoreCommandswhere/*what*/{}有没有办法做到这一点?谢谢! 最