установить делегат в target-c на iOS - PullRequest
1 голос
/ 13 сентября 2010
- (id)initWithDelegate:(id)delegate
{
    self = [super init];
    if (self)
    {
        _delegate = delegate;

    }
    return self;
}

Как правило, рекомендуется передавать делегат в методе init?а как насчет другого метода, который будет вызываться первым?

Также мне нужно установить _delegate в nil или разблокировать в методе dealloc или viewDidUnload?а как насчет dealloc или viewDidUnload метода контроллера, реализующего этот делегат?

Ответы [ 3 ]

2 голосов
/ 13 сентября 2010

Как правило, рекомендуется передавать делегат в методе init?

Это зависит от того, что вы хотите сделать.Если вам потребуется делегат каждый раз, когда создается экземпляр вашего объекта, было бы удобно просто передать его, когда вы init ваш объект.Это все личные предпочтения, хотя.

В данном коде вы просто присваиваете _delegate, поэтому вам не нужно ничего делать с этим конкретным иваром в ваших dealloc или viewDidUnload методах.

1 голос
/ 21 февраля 2011

Если вам нужно знать делегата во время метода init (или вообще), то он не является делегатом.При использовании шаблона делегирования объекты должны иметь возможность выполнять какое-то полезное поведение по умолчанию без своего делегата.

В любом случае, если у вас есть параметр, который должен знать ваш объект, независимо от того, что для правильной работы, вы должны обязательно передать его во время инициализации.

0 голосов
/ 13 сентября 2010

Как правило, рекомендуется передавать делегат в методе init?а как насчет другого метода, который будет вызываться первым?

Вы должны установить делегат на init только тогда, когда объект может нуждаться в связи с делегатом во время инициализации или если делегатдолжен быть установлен только один раз в течение срока службы объекта.В противном случае рекомендуется установить делегат через свойство.

Также нужно ли установить _delegate на nil или release в методе dealloc?а как насчет viewDidUnload?

Нет, _delegate не нужно устанавливать в nil, и его нужно освобождать, только если он был сохранен.

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