내에서는 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)
}
}
}
내 메소드에서 configure 메소드를 사용할 때 cellForRowAtIndexPath
전달하는 블록에서 weak 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]
있습니까?