Objective-C - правильная процедура для установки ViewController в качестве делегата для другого класса - PullRequest
1 голос
/ 02 августа 2011

Скажем, у меня есть 1 View Controller и один класс Model; ViewController и Model

В Model у меня есть метод, который выглядит следующим образом:

[object setDelegate:self]

Вместо этого я хочу, чтобы ViewController выступал в качестве делегата. Как и где мне это сделать?

Должен ли я alloc и init мой ViewController в моем - init методе модели, например:

ViewController *newVc = [[ViewController alloc] init];
[self setVc:newVc]; // retains newVc
[newVc release];

А затем сделайте:

[object setDelegate:[self vc]];

Пожалуйста, пролите немного света на это.

1 Ответ

0 голосов
/ 02 августа 2011

Вы можете сделать это, но если объект является вашей моделью, у вас может быть проблема с циклическими ссылками, у вас есть модель, сохраняющая viewController, и ваш viewController, сохраняющий вашу модель, ни один из них не получит deallocМетод вызывается для освобождения другого.Я бы посмотрел на использование уведомлений, ваш контроллер представления может иметь прямое соединение с вашей моделью, но ваша модель может передавать изменения любому, кому это нужно, вы можете просмотреть контроллер, который может наблюдать уведомление от вашей модели.Мне обычно нравится думать, что мой код модели должен работать с любым интерфейсом, даже в качестве программы командной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...