在我的闭包方法中,我必须触发委托方法,但由于弱而未触发的委托自身变为零。
import Foundation
protocol LoginViewModelDelegate: class {
func didCompleted(_ obj: LoginViewModel)
}
class LoginViewModel {
weak var delegate: LoginViewModelDelegate?
var schoolName: String
init() {
schoolName = ""
}
func getSchoolNameFrom(schoolId: String) {
weak var weakSelf = self
LoginNetworkController.getSchoolName(schoolId) {[weak self] (result, status, message) in
weakSelf?.schoolName = "Text"
weakSelf?.delegate?.didCompleted(weakSelf!)
}
}
}
不要像 weakSelf 那样采用局部变量。
LoginNetworkController.getSchoolName(schoolId) {[weak self] (result, status, message) in
self?.schoolName = "Text"
self?.delegate?.delegateMethoed(self!)
}
请检查让我知道这是否适合您?