gpt4 book ai didi

ios - Swift 正确声明对应于协议(protocol)并具有父类(super class)的对象

转载 作者:行者123 更新时间:2023-11-29 01:30:18 24 4
gpt4 key购买 nike

我是 Swift 初学者,一直被这个问题困扰。

我有一个原型(prototype)电池 CurrencySwitchTableViewCell那是 UITableViewCell 的子类.

class CurrencySwitchTableViewCell: UITableViewCell {
@IBOutlet weak internal var currencySwitchDelegate: AnyObject!

这个单元格有一个 currencySwitchDelegate应该属于 CurrencySwitchDelegate 的属性(property)协议(protocol)

protocol CurrencySwitchDelegate {
func didSelectCurrency(currency:Currency)
}

我如何在 CurrencySwitchTableViewCell 中申报?我的currencySwitchDelegateAnyObject对应CurrencySwitchDelegate协议(protocol)?

像这样的 Objective-C 代码的 Swift 模拟是什么?

NSObject<CurrencySwitchDelegate>id<CurrencySwitchDelegate>

附言

我知道我可以申报我的属性(property)

@IBOutlet weak internal var currencySwitchDelegate: CurrencySwitchDelegate!

但是 XCode 给我错误 @IBOutlet修饰符(IBOutlets 应该属于 AnyObject 类)

最佳答案

对象通常具有对委托(delegate)的弱引用,并且只有对象才能成为弱引用。您可以使用 : class

通知编译器委托(delegate)是一个对象
protocol CurrencySwitchDelegate: class {
func didSelectCurrency(currency:Currency)
}

目前 Xcode 无法使用 IBOutlet 协议(protocol)。临时解决方案是创建另一个 AnyObject 类型的 IBOutlet,然后将其转换到代码中。

@IBOutlet weak internal var outletDelegate: AnyObject?

private var delegate: CurrencySwitchDelegate? {
return self.outletDelegate as! CurrencySwitchDelegate?
}

关于ios - Swift 正确声明对应于协议(protocol)并具有父类(super class)的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33533667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com