Интервью недели
Head First: Привет! Спасибо, что зашли к нам.
Прокручиваемый список: Рад встрече. Мне нечасто приходится общаться с кем-то, кроме моего источника данных и делегата.
Head First: Хорошо, что вы вспомнили о них. Раньше мы работали с такими элементами, как надписи и кнопки, но у них были только свойства. Что это за история с делегатами и источниками данных?
Прокручиваемый список: Я отличаюсь от кнопок и надписей тем, что мне приходится работать с большими объемами данных. Я могу содержать одну строку, а могу и сто; все зависит от приложения.
Head First: Понятно. Надпись всегда содержит только одну строку, поэтому она может обойтись одним свойством. Ей проще.
Прокручиваемый список: Точно! И вместо того чтобы запихивать в меня все данные напрямую, удобнее просто дать мне возможность обратиться за данными, когда они мне понадобятся.
Head First: Но вы должны запрашивать данные каким-то конкретным способом, верно?
Прокручиваемый список: В этом-то все и дело! Я запрашиваю нужную информацию конкретным способом, поэтому мне и нужен конкретный источник UIPickerDatasource, но меня не интересует, откуда он берет эту информацию. Например, мне нужно знать, сколько строк я буду отображать. Я обращаюсь к своему источнику данных. Он может прочитать информацию из массива, базы данных, plist — для меня это неважно. Я совсем не привередлив. Мне нужно только одно: знать количество записей.
Head First: Выходит, вы можете отображать данные, взятые откуда угодно; если ваш источник данных знает, как ответить на ваши вопросы, вас не интересует, в каком внутреннем формате он хранит эти данные.
Прокручиваемый список: Верно. С делегатом дело обстоит несколько иначе. Я могу прорисовать свои вращающиеся колеса и все такое, но я не знаю, что нужно сделать, когда пользователь выделяет какую-либо строку, поэтому я передаю эстафету делегату.
Head First: А делегат реализован так, что при получении информации о произошедшем событии он выполняет нужное действие. Скажем, сохраняет данные, переставляет время на часах и так далее.
Прокручиваемый список: Точно. При использовании делегата вам не нужно субклассировать объект для адаптации его поведения. Хотя я должен признаться, что в моем поведении есть одна странность.
Head First: Вы обращаетесь к делегату за значением, чтобы отобразить запись, верно?
Прокручиваемый список: Угу, другие элементы обращаются к своему источнику данных. Я могу найти отговорки, но. У всех нас есть свои маленькие странности, верно?
Head First: Мы ценим вашу частность. Впрочем, в этом нет ничего плохого; ведь делегат может сделать с каждой строкой что-нибудь интересное, верно?
- Дата: 1-12-2014, 10:54