EXCRACE ACPI от COREGRAPHICS API в Napperation
-
08-10-2019 - |
Вопрос
Я пытаюсь сделать некоторые манипуляции COREGRAPHICS / COREIMAGE в недвижимости, используя MacRuby. У меня есть несколько вызовов API, которые читают исходный файл в CG и настроить CgimedEStination.
Если я помещу следующий код в NSOPENTION.IT, все работает отлично:
@dest = CGImageDestinationCreateWithURL(@photo.output_url, "public.jpeg" , 1, nil);
@context = CIContext.alloc.init
@cgOriginalImgSrc = CGImageSourceCreateWithURL(@photo.url, nil)
@cgOriginal = CGImageSourceCreateImageAtIndex(@cgOriginalImgSrc, 0, nil)
Но если я поставим тот же код в основную функцию для NSOperation, я получаю ошибки Sporadic Exc_bad_access. И только при прохождении Nsoperation к NSOperatueue; Если я призваю сам сам, это работает просто хорошо.
В конце основной я бегу:
CFRelease(@dest)
CFRelease(@cgOriginalImgSrc)
CGImageRelease(@cgOriginal)
Даже незнакомец состоит в том, что он работает в init, даже если init не вызывается из основного потока (так что не главная тема / фоновая тема, я думаю, я думаю)
Есть предположения?
Решение
Похоже, одна из ваших потоков ссылается на объект, который больше не существует в памяти. Попробуйте удалить
CFRelease(@dest)
CFRelease(@cgOriginalImgSrc)
CGImageRelease(@cgOriginal)
И посмотрите, как это идет. Также вы можете попробовать проверять свои объекты в каждой очереди, чтобы увидеть, до сих пор доступен. Наконец, вы можете использовать MacRubyd, отладчик для Macruby, чтобы увидеть, что происходит, или даже используйте GDB и вставьте задницу, чтобы мы могли видеть, в чем проблема.
Спасибо,
- Матовый