Создание объекта для работы в качестве делегата - Цель C

82
9

Мой вопрос на самом деле простой, как мне создать объект для работы в качестве делегата, вместо того, чтобы включать в него методы делегата?


Например, у меня есть x функциональность, которая требует методов делегата, и в настоящее время они настроены на использование self в качестве делегата. Я хотел бы поместить эти методы в свой собственный объект, чтобы методы делегата могли быть вызваны и выполняться, если представление закончилось.


Какой лучший способ?

спросил(а) 2010-01-22T17:43:00+03:00 10 лет, 9 месяцев назад
1
Решение
70

например, методы делегирования NSXMLParser - они существуют, делегат определен, но я не хочу называть их как себя в контроллере просмотра... какой у меня есть другой вариант?



Вы можете указать другой пользовательский класс для обработки методов делегата, если хотите. Просто создайте класс, назовите его MyXMLParserDelegate или что-то подобное. Затем все, что вам нужно сделать, это сообщить вашему объекту NSXMLParser, что он должен использовать экземпляр вашего класса в качестве его делегата.


Если вы используете Interface Builder, добавьте новый объект в XIB файл, установите его класс в MyXMLParserDelegate, а затем перетащите соединение из вашего селектора NSXMLParser object delegate в новый объект.


Если вы делаете это программно, основная операция выглядит так:

MyXMLParserDelegate * myDelegate = [[MyXMLParserDelegate alloc] init];
[someXMLParser setDelegate:myDelegate];

Имейте в виду, что делегаты не сохраняются, поэтому для этого без утечки памяти вы должны добавить ivar типа MyXMLParserDelegate в свой класс viewController и затем сделать следующее:


// in your @interface block:
{
...
MyXMLParserDelegate * myDelegate;
}

// in your init method:
myDelegate = [[MyXMLParserDelegate alloc] init];

// in your awakeFromNib method (or anywhere else it seems appropriate):
[someXMLParser setDelegate:myDelegate];

// in your dealloc method:
[myDelegate release];

ответил(а) 2010-01-22T18:10:00+03:00 10 лет, 9 месяцев назад
58

Проверьте этот ответ, я думаю, он охватывает то, что вам нужно: Как использовать пользовательские делегаты в Objective-C

ответил(а) 2010-01-22T17:48:00+03:00 10 лет, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема