Чтобы узнать, является ли это NSProxy
или нет, используйте isProxy
, см. ссылку .
Но учтите также, что Apple использует много других внутренних магий, не только NSProxy
.Например, чтобы реализовать KVC / KVO, они часто создают анонимный класс, который лежит в своем собственном классе, вставляют его в иерархию классов и изменяют идентичность объекта.Смотрите, например, хорошее обсуждение Майка Эша в этой пятничной статье вопросов и ответов .(Кстати, вам обязательно следует прочитать этот блог, если вам интересно узнать о времени выполнения Objective-C.)
Как написано там, самый надежный способ раскрыть истинную идентичность объекта - это использовать среду выполнения.см. здесь .
id obj;
Class c=object_getClass(obj);
дает вам истинный класс.Обратите внимание, что объект может лгать, что он есть, повторно реализуя [obj class]
!