[英]swift call self inside closure in init
convenience init(title: String!,
datePickerMode: UIDatePickerMode,
selectedDate: Date!,
origin view: UIView!) {
self.init(title: title,
datePickerMode: datePickerMode,
selectedDate: selectedDate,
doneBlock: { [weak self] (_, date , _) in
guard let sself = self else { return }
sself.done.next(date as! Date)
}
,
cancel: { [weak self] (_) in
guard let sself = self else { return }
sself.cancel.next()
}
,
origin: view)
但我得到編譯器錯誤:
'self' 在 self.init 調用之前使用
我解決了這個問題,首先用閉包 nil 初始化,然后立即設置。
convenience init(title: String!,
datePickerMode: UIDatePickerMode,
selectedDate: Date!,
origin view: UIView!) {
self.init(title: title,
datePickerMode: datePickerMode,
selectedDate: selectedDate,
doneBlock: nil,
cancel: nil,
origin: view)
self.onActionSheetDone = { [weak self] (_, date , _) in
guard let sself = self else { return }
sself.done.next(date as! Date)
}
self.onActionSheetCancel = { [weak self] (_) in
guard let sself = self else { return }
sself.cancel.next()
}
但我不明白以第一種方式這樣做有什么問題。 感謝您提供一些信息
在第一種情況下,您在self
在閉包中使用 init 之前使用了self
。 這是不允許的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.