2011-03-10 2 views
1

У меня есть контроллер вида, который содержит вид прокрутки, представление контента и CATiledLayer как подслой в представлении содержимого.Прерывание обработки CATiledLayer?

Если я удаляю представление своих контроллеров из своего супервизора, пока CATiledLayer все еще занят (например, для рендеринга страницы PDF), я получаю самые странные сбои и нулевые ссылки. Похоже, CATiledLayer не рад, если вы это почувствуете. Есть ли способ, которым я могу прервать то, что он сейчас делает?

ответ

1

Я прав, что контроллер, который вы удаляете, является делегатом CATiledLayer?

Затем вы должны установить делегат CATiledLayer в ноль при удалении вашего контроллера.

Может быть связана ссылка (мой собственный вопрос XD): CATiledLayer drawLayer:inContext: crashing when the view is deallocated while the image to draw is being retrieved

+0

Трудно сказать. Я нахожусь в MonoTouch :-) Делегат - это внутренний класс моего контроллера. Я уже обыскал SO и нашел ваш другой пост, но он не работает для меня. Я попытался установить свой делегат в null, но, возможно, что-то не работает в MT. – Krumelur

+0

Я вижу. К сожалению, я понятия не имею о MonoTouch. Я знаю, что CATiledLayer обрабатывает то, что он хочет рисовать в фоновом режиме, а затем вызывает делегата, когда он готов к отображению. Если этот указатель делегата не равен нулю, а указатель не указывает на подходящий класс, тогда вы получите случайные сбои и null refs. – Altealice

+0

Вы были правы в конце! Но одновременно я столкнулся с второй проблемой: для изменения страниц я использую распознаватель жестов. Кажется, в CocoaTouch имеется ошибка, из-за которой обработчик распознавателя запускается во второй раз, если вид, к которому он принадлежит, удаляется из своего супервизора. Это вызвало NULLREF, и я подумал, что это связано с CATiledLayer. – Krumelur

Смежные вопросы