Я предопределю этот вопрос, заявив, что то, что я собираюсь спросить, касается только образовательных и возможно отладочных целей.
Как объекты блока создаются внутри среды выполнения Objective C?
Я вижу иерархию классов, которые все представляют различные типы блоков, а наивысший суперкласс в иерархии ниже NSObject
равен NSBlock
. Демпинг для данных класса показывает, что он реализует методы + alloc
, + allocWithZone:
, + copy
и + copyWithZone:
. Ни один из других подклассов блоков не реализует эти методы класса, что заставляет меня поверить, возможно, ошибочно, что NSBlock
отвечает за обработку блоков.
Но эти методы, кажется, не вызываются ни в какой момент во время блочного срока службы. Я обменялся реализациями со своим собственным и поставил точку останова в каждом, но они никогда не вызываются. Выполнение подобных упражнений с реализациями NSObject
дает мне именно то, что я хочу.
Итак, я предполагаю, что блоки реализованы по-другому? Кто-нибудь может пролить свет на то, как эта реализация работает? Даже если я не могу подключиться к распределению и копированию блоков, я хотел бы понять внутреннюю реализацию.