Swift 正确声明对应于协议并具有超类的对象
Swift correct declaration of object corresponding to protocol and having superclass
我是 Swift 初学者,我真的被这个问题困住了。
我有一个原型单元 CurrencySwitchTableViewCell
,它是 UITableViewCell
的子class。
class CurrencySwitchTableViewCell: UITableViewCell {
@IBOutlet weak internal var currencySwitchDelegate: AnyObject!
这个单元格有一个 currencySwitchDelegate
属性 应该属于 CurrencySwitchDelegate
协议
protocol CurrencySwitchDelegate {
func didSelectCurrency(currency:Currency)
}
如何在CurrencySwitchTableViewCell
中声明我的currencySwitchDelegate
是AnyObject
对应CurrencySwitchDelegate
协议?
像这样的 Objective-C 代码的 Swift 模拟是什么?
NSObject<CurrencySwitchDelegate>
或 id<CurrencySwitchDelegate>
P.S.
我知道我可以宣布我的 属性 为
@IBOutlet weak internal var currencySwitchDelegate: CurrencySwitchDelegate!
但是 XCode 使用 @IBOutlet
修饰符给我错误(IBOutlets 应该是 AnyObject
class)
对象通常对委托有弱引用,只有对象可以成为弱引用。您可以使用 : class
通知编译器该委托是一个对象
protocol CurrencySwitchDelegate: class {
func didSelectCurrency(currency:Currency)
}
暂时Xcode 无法使用 IBOutlet 协议。临时解决方案是创建另一个 AnyObject 类型的 IBOutlet,然后将其转换为您的代码。
@IBOutlet weak internal var outletDelegate: AnyObject?
private var delegate: CurrencySwitchDelegate? {
return self.outletDelegate as! CurrencySwitchDelegate?
}
我是 Swift 初学者,我真的被这个问题困住了。
我有一个原型单元 CurrencySwitchTableViewCell
,它是 UITableViewCell
的子class。
class CurrencySwitchTableViewCell: UITableViewCell {
@IBOutlet weak internal var currencySwitchDelegate: AnyObject!
这个单元格有一个 currencySwitchDelegate
属性 应该属于 CurrencySwitchDelegate
协议
protocol CurrencySwitchDelegate {
func didSelectCurrency(currency:Currency)
}
如何在CurrencySwitchTableViewCell
中声明我的currencySwitchDelegate
是AnyObject
对应CurrencySwitchDelegate
协议?
像这样的 Objective-C 代码的 Swift 模拟是什么?
NSObject<CurrencySwitchDelegate>
或 id<CurrencySwitchDelegate>
P.S.
我知道我可以宣布我的 属性 为
@IBOutlet weak internal var currencySwitchDelegate: CurrencySwitchDelegate!
但是 XCode 使用 @IBOutlet
修饰符给我错误(IBOutlets 应该是 AnyObject
class)
对象通常对委托有弱引用,只有对象可以成为弱引用。您可以使用 : class
protocol CurrencySwitchDelegate: class {
func didSelectCurrency(currency:Currency)
}
暂时Xcode 无法使用 IBOutlet 协议。临时解决方案是创建另一个 AnyObject 类型的 IBOutlet,然后将其转换为您的代码。
@IBOutlet weak internal var outletDelegate: AnyObject?
private var delegate: CurrencySwitchDelegate? {
return self.outletDelegate as! CurrencySwitchDelegate?
}