Как практиковать самоанализ в какао? - PullRequest
0 голосов
/ 09 декабря 2011

Как новичок начинает практиковать интроспекцию в программировании Какао (особенно в iOS)? Другими словами, какие сценарии я должен создать внутри своего учебного кода, который заставит меня использовать такие вещи, как «isKindOfClass»?

Спасибо и извинения за абстрактную природу этого вопроса. Я просто не мог бы сформулировать это лучше.

1 Ответ

0 голосов
/ 10 декабря 2011

В Cocoa (Mac) и Cocoa Touch (iOS) обычно лучше использовать respondsToSelector: или conformsToProtocol:, чем isKindOfClass:.

Лучшая причина, по которой я могу использовать isKindOfClass: это то, что вы читаете в списке свойств или данных JSON и должны определить, к какому типу объектов относится его корневой объект (или, если вы параноик, любой другой объект в нем).Вы можете сделать это в утверждении, предполагая, что вы хотите перехватить исключение (если пользователь предоставил файл, вам лучше представить ошибку, чем позволить исключению убить приложение).

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

Если вы намеренно создаете приложениечто касается всех этих случаев, я рекомендую написать основанное на документе приложение Какао с плагинной архитектурой.Используйте протокол для указания вашего API подключаемого модуля с проверками conformsToProtocol: и respondsToSelector: на стороне приложения.Реализуйте единственный подключаемый модуль, который обрабатывает документы в формате списка свойств и использует isKindOfClass:, чтобы убедиться, что список свойств, который он читает, соответствует ожидаемому.

...