Вопрос

Я пытаюсь сделать некоторые манипуляции 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 и вставьте задницу, чтобы мы могли видеть, в чем проблема.

Спасибо,

  • Матовый
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top