Я написал функцию, которая освобождает объект и возвращает YES
, если объект был освобожден:
BOOL getsDeallocatedByReleasing(id object);
Также имеется расширенный интерфейс, где вы можете запускать произвольный код в блоке, и вы получите логическое значение, указывающее, был ли освобожден объект данного класса:
BOOL classGetsDeallocated(Class c, void (^block)(void));
В коде используется метод swizzling, он довольно уродливый и определенно не поточно-ориентированный, но работает. Вы можете найти его на GitHub , я буду держать его в курсе, если найду какие-либо ошибки.
P.S. После написания всего этого кода (да!), Не будет ли возможно добавить один retain
в начале, делать все, что вы хотите, разбирать граф объекта, который вы проверяете, и проверять счет сохранения объекта? 1014 *