У меня есть следующиеДелегат свойство, которые инициированы на соответствующий класс
protocol SentenceDelegate: class{
func sentenceDidFinish()
}
У меня есть SentenceMarkov
класс соответствовать протоколу:
class SentenceMarkov : SentenceDelegate{
// foo
// bar
}
я реализовать метод протокола в моем классе конформного :
class SentenceMarkov : SentenceDelegate{
//...
func sentenceDidFinish{
//Do something
}
//...
}
Я создаю объект недвижимости класса что вызывает метод протокола под названием sentenceDelegate
:
class otherClass{
//..
weak var sentenceDelegate: SentenceDelegate?
//..
}
Я установить это свойство в моем первом классе self
class SentenceMarkov{
var FirstOne:OtherClass {
didSet { FirstOne.sentenceDelegate = self}
}
var SecondOne:OtherClass {
didSet{ SecondOne.sentenceDelegate = self}
}
init(Ult:OtherClass, Penult:OtherClass){
self.FirstOne= Ult
self.SecondOne = Penult
self.FirstOne.sentenceDelegate = self
self.SecondOne.sentenceDelegate = self
}
//..
}
Наконец я вызываю метод sentenceDelegate
в OtherClass
после init()
class OtherClass{
func sentenceDone(){
sentenceDelegate?.sentenceDidFinish()
}
}
Проблема заключается в том, что когда я устанавливаю точки останова по указанному выше методу, sentenceDelegate
равен nil
. Я не уверен, почему, потому что я установил его, хотя я мог бы ошибаться, но я не уверен, как это улучшить. Вот три Swift файлы включают ViewController
где SentenceMarkov
инициализируется:
https://gist.github.com/ebbnormal/e1cb791dd165a6866e11 https://gist.github.com/ebbnormal/263c9343e403c3a7ac40 https://gist.github.com/ebbnormal/1400e7da024d78ba5ed0
Вы убедитесь, что sentenceDone вызывается из 'FirstOne 'или' SecondOne'? –
@ Vishnugondlekar да, потому что я установил там точку останова и называется. – Thalatta