Нужно ли создавать экземпляр класса, чтобы назначить ему делегата? - PullRequest
0 голосов
/ 16 декабря 2010

Приносим извинения за уровень вопроса noobness.

Я видел этот ответ, где написано

Добавьте что-то подобное своему делегату NSURLConnection

Однако рассматриваемый метод, sendSynchronousRequest:returningResponse:error:, является методом класса. Если я правильно понимаю методы делегата, они используют делегата, который указывается при инициализации объекта NSURLConnection.

Итак, если у меня нет экземпляра класса, делегат не может быть использован. Правильно ли я понял?

Ответы [ 2 ]

1 голос
/ 16 декабря 2010

Да, вы правы.В Какао для назначения делегата требуется экземпляр.В случае NSURLConnection его делегат предполагается использовать при выполнении асинхронного запроса, который инициируется с помощью -initWithRequest:delegate: или +connectionWithRequest:delegate:

Поскольку классы также являются объектами, можно предположить, что они также могутесть делегаты.Однако, поскольку в Objective-C нет понятия переменных класса, классу негде было бы хранить свой делегат (хотя он мог бы использовать стандартную переменную C в своем файле .m).Во всяком случае, эта концепция не используется в какао.

1 голос
/ 16 декабря 2010

Да, делегаты используются для обработки событий при асинхронной отправке запроса.

При отправке синхронного запроса с использованием метода +sendSynchronousRequest:returningResponse:error: делегаты не используются - вы получаете только полученные данные и (необязательно) ответ сервера иошибка и отсутствие информации о событиях промежуточной загрузки (и помните, что вызывающий поток также блокируется во время соединения).

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