Получить все существующие указатели на объект - PullRequest
2 голосов
/ 22 декабря 2011

Можно ли получить список указателей на указатели на целевой объект c.

что-то вроде

id **pointers(id object, int *out_count)

Довольно безумно, а? =)

1 Ответ

2 голосов
/ 22 декабря 2011

К сожалению, нет. Если бы такое вообще было возможно, то написать точный сборщик мусора было бы довольно просто:

int count;
pointers(obj, &count);
if (count == 0) {
    free(obj);
}

Так как сборщик мусора target-c должен преследовать указатели из корней, управлять распределителем и консервативно сканировать стек, чтобы достичь чего-то подобного, я думаю, разумно предположить, что вам нужно сделать то же самое. *

Возможно, это удастся использовать в реализации сборщика мусора, если он работает в режиме GC. Не очень хорошая идея, не простая и не будет работать на iOS, но, возможно, возможно. В конце концов, libauto является открытым исходным кодом.

...