在我的 TextViewTableViewCell
中,我有一个变量来跟踪一个块,还有一个 configure 方法来传入和分配块。
这是我的 TextViewTableViewCell
课程:
//
// TextViewTableViewCell.swift
//
import UIKit
class TextViewTableViewCell: UITableViewCell, UITextViewDelegate {
@IBOutlet var textView : UITextView
var onTextViewEditClosure : ((text : String) -> Void)?
func configure(#text: String?, onTextEdit : ((text : String) -> Void)) {
onTextViewEditClosure = onTextEdit
textView.delegate = self
textView.text = text
}
// #pragma mark - Text View Delegate
func textViewDidEndEditing(textView: UITextView!) {
if onTextViewEditClosure {
onTextViewEditClosure!(text: textView.text)
}
}
}
当我在 cellForRowAtIndexPath
方法中使用 configure 方法时,如何在传入的块中正确地使用弱 self。
这就是我没有软弱的自我所拥有的:
let myCell = tableView.dequeueReusableCellWithIdentifier(textViewCellIdenfitier) as TextViewTableViewCell
myCell.configure(text: body, onTextEdit: {(text: String) in
// THIS SELF NEEDS TO BE WEAK
self.body = text
})
cell = bodyCell
更新 : 使用 [weak self]
我得到了以下工作:
let myCell = tableView.dequeueReusableCellWithIdentifier(textViewCellIdenfitier) as TextViewTableViewCell
myCell.configure(text: body, onTextEdit: {[weak self] (text: String) in
if let strongSelf = self {
strongSelf.body = text
}
})
cell = myCell
当我用 [unowned self]
代替 [weak self]
并取出 if
语句时,应用程序崩溃了。对于如何使用 [unowned self]
有什么想法吗?