Я бы сказал, делай так, как это делает Apple. Допустим, мы берем UITableView
в качестве примера.
Во-первых, delegate
- это объект, который будет help
другим классом, вы должны думать о delegate
как о helper
классе (я знаю, что это не совсем так).
Таким образом, в случае UITableView
UITableView запрашивает у своего делегата какую-то работу, а поскольку он запрашивает, прослушивает return
to.
Когда вы получаете этот звонок от UITableView
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
Вы отправляете обратно информацию master
делегата о том, сколько разделов должно быть в UITableView.
Во-вторых, если вы внимательно посмотрите на сигнатуру метода, вы увидите, что master
передает себя в качестве параметра, поэтому delegate
может запросить у master
дополнительную информацию, если это необходимо.
Так вот, как это работает, у master
есть указатель на delegate
, чтобы иметь возможность задать ему какой-то вопрос, и delegate
узнает, что это master
, когда он получает вызов. delegate
может хранить указатель на master
, но, как вы видите, в этом нет необходимости.
Это означает, что у вас всегда есть ссылка на delegate
или master
, и если у вас есть ссылка на нее, отправка информации не является проблемой.
И помните, что делегат должен предоставлять информацию своему хозяину, поэтому, если я правильно прочитал ваш код, вы делаете обратное.