2011-01-31 3 views
0

Можно ли добавить еще одно поле (например, местоположение и т. Д.) В протокол TTPhoto?Добавление атрибутов в TTPhoto

Я знаю, что одним из способов является создание моего собственного протокола, но это потребует от меня изменить много продуктов в моих контроллерах. Есть ли более простой способ достичь этого?

ответ

0

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

Протоколы - это всего лишь контракт, определяющий связь и не определяющий поведение. Таким образом, нет концепции наследования. И нет списка выполнения селекторов, включенных в протокол, поэтому идея не особенно полезна.

Ваш лучший снимок состоит в том, чтобы определить дополнительный протокол, который включает в себя дополнительную функциональность, которую вы хотите. Напишите свои новые объекты для реализации обоих протоколов. Расширять классы, которые вам не нужны, или иметь доступ к методам категорий.

Если вам нужно дополнительное хранилище для обработки новых полей, то это безопаснее для подкласса. Фактически вы можете добавлять переменные экземпляра во время выполнения в настоящее время, но вам нужно будет спуститься к интерфейсу C в среду выполнения Objective-C, и найти возможность сделать это потребует нескольких прыжков с обручем.

Смежные вопросы