Всего смысл использования протоколов делегата является отвязать объект делает работу с типа класса, который действует на работе.
На самом деле, сам характер делегата состоит в том, что вы не ухаживания какой класс он есть. Все, что вам нужно, это то, что он соответствует протоколу и поэтому будет иметь набор известных функций, которые могут быть запущены на нем.
Делегат может быть UIView
, UIViewController
, UILabel
или любым специальным классом, которым вы хотите быть.
Определяя класс, а затем действуя на него по-разному в зависимости от класса, вы нарушаете фундаментальный принцип, который делегаты и протоколы пытаются обойти, в первую очередь, это тесно связанные объекты.
Кроме того, класс с делегатом не должен знать, что происходит с данными, и это тоже не должно волновать. Например, UITableView
не знает, что происходит, когда его делегат отвечает на выбранную ячейку. Этот делегат может что-то обновить в CoreData или перейти на новый ViewController. В представлении таблицы нет (и не должно) знать это.
Ваш объект должен сказать что-то вроде ... HELLO DELEGATE! Something just happened and this is the result, just wanted to let you know
. Затем делегат берет этот результат и действует на него.
[сам.класс делегата]. class - это селектор, а не свойство. –
@ Kampai Не назначаю ли я определенному классу делегат другого класса? – bobsacameno
@OnikIV не работает для меня. В нем говорится «Не знаю метода экземпляра для класса селектора». – bobsacameno