Как избежать, чтобы подсчет ссылок потерял значимость в _NSCFURLProtocolBridge в пользовательском NSURLProtocol в среде GC

Ну, действительно необходимо знать то, что N во времени выполнения, по крайней мере, даже если это включает выполнение дополнительной передачи по списку для подсчета их. Самый простой алгоритм, чтобы сделать это должно просто выбрать случайное число в N и удалить тот объект, повторные k времена. Или, если допустимо возвратить повторные числа, не удаляйте объект.

, Если у Вас нет ОЧЕНЬ большого N и очень строгих требований к производительности, этот алгоритм выполнения с O(N*k) сложность, которая должна быть приемлемой.

Редактирование: Nevermind, метод Tom Hawtin является путем лучше. Выберите случайные числа сначала, затем пересеките список однажды. Та же теоретическая сложность, я думаю, но намного лучше ожидаемое время выполнения.

11
задан Quinn Taylor 13 July 2009 в 14:32
поделиться

2 ответа

Эта ошибка обычно указывает на то, что объект был сохранен с помощью -retain , но освобожден с помощью CFRelease () . Если вы считаете, что это не может быть вашим объектом (и это не ужасно), вам следует открыть другой радар. Но сначала вы должны осмотреться и увидеть, есть ли у вас CF-объект. re using -retain , когда, возможно, вам следует использовать CFRetain () .

Остальное - это съемка в темноте ....

Вы можете получить некоторое представление увеличивая стек и просматривая параметры, которые передаются этим методам C ++ (или особенно auto_zone_release ). Попробуйте это в gdb, чтобы узнать, что находится в первом параметре:

p *($esp)

И посмотрите, сможете ли вы получить какое-либо представление о передаваемом объекте. Возможно, это сработает, если вам повезет:

po (id)(*($esp))
1
ответ дан 3 December 2019 в 10:04
поделиться

Это ошибка в реализации _NSCFURLProtocolBridge.

Используйте http://bugreport.apple.com/ и сообщите об ошибке. Если вы включите URL-адрес этой страницы, это будет признательно (и если вы обновите эту страницу с помощью Radar #, это тоже будет оценено). В идеале, если бы вы могли прикрепить двоичный файл своей заставки, это было бы очень полезно; исходный код не требуется.

К счастью, это не должно вызывать сбоя. К сожалению, это, вероятно, вызывает утечку.

3
ответ дан 3 December 2019 в 10:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: