EXC_BAD_ACCESS UIKit и QuartzCore совместно используют CALayer

Я экспериментирую с ошибкой EXC_BAD_ACCESS, которую не могу устранить, поэтому здесь я представляю ее вам в надежде получить некоторую помощь:)

Обычно я использую для решения такого рода ошибок, используя инструменты-зомби, но на этот раз это не так просто...

Как вы можете видеть на прикрепленном изображении, похоже, что я не взаимодействую с этим объектом; это только сохранено / выпущено UIKit и QuartzCore, таким образом, я не знаю, где искать или что сделать, чтобы решить это.

Любой намек? Спасибо!

URL изображения:

2 ответа

Поскольку вы говорите, что используете многопоточность, я уверен, что это ваша проблема:

UIKit, хотя и рекламируется как поточно-ориентированный начиная с iOS4, не является полностью поточно-ориентированным. Он выполняет внутренние вызовы UIStringDrawing, который не является потокобезопасным, и вы в конечном итоге с этими сбоями. Посмотрите здесь: методы UIStringDrawing не являются потокобезопасными в iOS 6

Попробуйте вместо этого нарисовать свой текст в CATextLayer

Мне немного любопытно, почему и как вы используете общий CALayer? По моему опыту, работа с CALayers не требует больших затрат, вы разделяете CALayer между двумя представлениями или как? В этом случае моя рекомендация и ответ - не делиться им, а вместо этого иметь два CALayers. Если у вас нет варианта использования, который, конечно, хорош, но я не могу думать ни о каком.

Удачи!

Другие вопросы по тегам