在 Swift 中实现一个协议 [重复]

Posted

技术标签:

【中文标题】在 Swift 中实现一个协议 [重复]【英文标题】:Implement a protocol in Swift [duplicate] 【发布时间】:2014-06-13 08:16:17 【问题描述】:

我正在使用一个 Objective-C 库。它有一个协议

@protocol RNFrostedSidebarDelegate <NSObject>
@optional
- (void)sidebar:(RNFrostedSidebar *)sidebar didTapItemAtIndex:(NSUInteger)index;
- (void)sidebar:(RNFrostedSidebar *)sidebar didEnable:(BOOL)itemEnabled itemAtIndex:(NSUInteger)index;
@end

我正在尝试在 Swift 中实现它。这个func应该怎么写?

【问题讨论】:

点赞this。 【参考方案1】:

这将是一个实现协议的 Swift 类

class MyForstedSidebarDelegate : RNFrostedSidebarDelegate 

    func sidebar(sidebar: RNFrostedSidebar, didTapItemAtIndex index: UInt) 
        ... do stuff ...
    

    func sidebar(sidebar: RNFrostedSidebar, didEnable itemEnabled: Bool, itemAtIndex index: UInt) 
        ... do stuff ...
    


【讨论】:

效果很好。谢谢!【参考方案2】:

这样的东西可能与您最初的概念相似:

@objc protocol RNFrostedSidebarDelegate 
    @optional func sideBarDidTapItem(sidebar: RNFrostedSidebar, index: UInt) -> ()
    @optional func sideBarDidEnable(sidebar: RNFrostedSidebar, itemEnabled: Bool, index: UInt) -> ()

【讨论】:

以上是关于在 Swift 中实现一个协议 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在基类中实现 Swift 协议方法

具有最终类的多态性,可在 swift 中实现关联类型协议

调用 Swift 协议扩展方法而不是子类中实现的方法

在 Swift 中实现 copy()

我何时以及为啥要在 Swift 中使用协议?

如何在Swift中实现Objective-C而不定义新类