Оба типа объектов более или менее ведут себя одинаково, это вопрос того, что они делают, и это вопрос.
Объект типа делегата отвечает на действия, которые принимает другой объект. Например, протокол UITableViewDelegate
имеет такие методы, как didSelectRowAtIndexPath
, для выполнения действий при выборе пользователем определенной строки в таблице.
Принимая во внимание, что объект типа источника данных передает данные другому объекту. Например, протокол UITableViewDataSource
имеет такие методы, как cellForRowAtIndexPath
и numberOfRowsInSection
, которые определяют, что должно отображаться в таблице.
Нет никакой жесткой разницы между двумя в плане компиляции, это просто стиль кодирования, чтобы сделать то, что делает объект, что очень ясно для пользователя кода.
EDIT:
Чтобы ответить на ваш второй вопрос: если вы хотите, чтобы каждый сигнал тревоги реагировать по-разному, вам нужно будет написать другой делегат для каждого предупреждения. Например, если одно из ваших предупреждений является предупреждением о сохранении (возможно, вы собираетесь перезаписать файл, и он появится, чтобы подтвердить, что пользователь хотел бы сделать), у вас будет такой объект, как:
@interface SaveConfirmAlertDelegate : NSObject<UIAlertViewDelegate>
@end
И в @implementation
для SaveConfirmAlertDelegate
вы должны реализовать надлежащую функцию сохранения, в зависимости от того, какую кнопку пользователь нажал в предупреждении.
Когда вы создаете представление предупреждения, вы указываете, какой должен быть объект делегата, это не должно быть self
. Вы могли бы, чтобы ваши четыре делегата были сохранены как разные объекты и при необходимости установили их в оповещениях.
Надеюсь, что это прояснит ситуацию
Спасибо за объяснение моей первой проблемы. Я добавил пример на мой вопрос. – RMDan
@ RMDan Я добавил дополнительное объяснение для вашего второго вопроса, я надеюсь, что это немного уладится. –
Это имеет смысл. Мне нужно будет больше узнать о делегировании, но это начинает иметь смысл. – RMDan