Ну, действительно необходимо знать то, что N во времени выполнения, по крайней мере, даже если это включает выполнение дополнительной передачи по списку для подсчета их. Самый простой алгоритм, чтобы сделать это должно просто выбрать случайное число в N и удалить тот объект, повторные k времена. Или, если допустимо возвратить повторные числа, не удаляйте объект.
, Если у Вас нет ОЧЕНЬ большого N и очень строгих требований к производительности, этот алгоритм выполнения с O(N*k)
сложность, которая должна быть приемлемой.
Редактирование: Nevermind, метод Tom Hawtin является путем лучше. Выберите случайные числа сначала, затем пересеките список однажды. Та же теоретическая сложность, я думаю, но намного лучше ожидаемое время выполнения.
Эта ошибка обычно указывает на то, что объект был сохранен с помощью -retain
, но освобожден с помощью CFRelease ()
. Если вы считаете, что это не может быть вашим объектом (и это не ужасно), вам следует открыть другой радар. Но сначала вы должны осмотреться и увидеть, есть ли у вас CF-объект. re using -retain
, когда, возможно, вам следует использовать CFRetain ()
.
Остальное - это съемка в темноте ....
Вы можете получить некоторое представление увеличивая стек и просматривая параметры, которые передаются этим методам C ++ (или особенно auto_zone_release
). Попробуйте это в gdb, чтобы узнать, что находится в первом параметре:
p *($esp)
И посмотрите, сможете ли вы получить какое-либо представление о передаваемом объекте. Возможно, это сработает, если вам повезет:
po (id)(*($esp))
Это ошибка в реализации _NSCFURLProtocolBridge.
Используйте http://bugreport.apple.com/ и сообщите об ошибке. Если вы включите URL-адрес этой страницы, это будет признательно (и если вы обновите эту страницу с помощью Radar #, это тоже будет оценено). В идеале, если бы вы могли прикрепить двоичный файл своей заставки, это было бы очень полезно; исходный код не требуется.
К счастью, это не должно вызывать сбоя. К сожалению, это, вероятно, вызывает утечку.