ในตัวฉันTextViewTableViewCell
ฉันมีตัวแปรที่จะติดตามบล็อกและวิธีกำหนดค่าที่บล็อกถูกส่งผ่านและกำหนด
นี่คือ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
จะใช้ตัวเองที่อ่อนแอในบล็อกที่ฉันผ่านได้อย่างไร
นี่คือสิ่งที่ฉันมีโดยไม่มีตัวตนที่อ่อนแอ:
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]
?