objective-c - Swift 相当于 id<MyProtocol>?

标签 objective-c swift delegates protocols

问题在标题中。在 Objective-C 中,如果我想拥有一个 HAS 遵守特定协议(protocol)的属性(如委托(delegate)),可以这样定义它:

@property (weak) id<MyDelegate> delegate;

我如何在 Swift 中执行此操作?

最佳答案

协议(protocol)是一种类型,因此您可以将其用作已声明的变量类型。要使用 weak,您必须将类型包装为 Optional。所以你会说:

weak var delegate : MyDelegate?

但是为了让它工作,MyDelegate 必须是一个 @objcclass 协议(protocol),以保证采用者是一个类(不是结构或枚举,因为它们不能是 weak)。

关于objective-c - Swift 相当于 id<MyProtocol>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30309028/

相关文章:

iphone - 使用 UINavigationController 和默认后退按钮时如何将数据传回父 View ?

ios - 在 xcode 中找不到生成的头文件

iphone - MPMoviePlayerController 不会自动将旋转更改为横向

ios - 使用 MKMapKit 显示用户位置( Objective-C )

swift - 如何在 Swift 中提供带有错误类型的本地化描述?

swift - 如何从 Swift 3 中的 TextView 中删除查找和共享

iphone - 我怎样才能从标签中获取对象?

arrays - 将 firebase 中多个字典中的值添加到 Int 中

ios - 访问 WKWebView 的 AVPictureInPictureController 委托(delegate)回调

kotlin - 如何将依赖项注入(inject) Kotlin 中的接口(interface)委托(delegate)?