Если я переопределяю метод в категории, это будет просто влиять на файлы, включая его, или влияет на весь проект? Я хочу переопределить "methodSignatureForSelector" и "forwardInvocation", чтобы игнорировать ошибку селектора undefined для NSNull. Поэтому я хочу знать, влияет ли это только на файлы, включая его. Спасибо заранее.
Каковы возможности для объективной категории c
Ответ 1
Скажите, что у вас есть класс A и категория C, определенные на нем. Каждый из этих классов имеет свои собственные .h.m файлы.
Что делает категория "влиять"?
Что касается компиляции, то только единицы компиляции (.m файлы), которые импортируют файл C.h. Скажем: в файлах, которые импортируют этот заголовок, вы не будете иметь предупреждений о селекторах undefined (для селекторов, определенных в C.h, конечно); в других файлах вы получите такие предупреждения.
Что касается связывания (или выполнения, который довольно близок в Objective-C), затрагивается весь ваш исполняемый файл.
Действительно, даже если вы не импортируете файл Ch в, скажем, Bm, если Bm использует селектор, определенный в Ch, этот вызов будет успешным (т.е. реализация из вашей категории будет эффективно использована), но вы тем не менее, получит предупреждение при компиляции Bm Это также будет справедливо, если B.m был скомпилирован в другое время (т.е. До создания категории).