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