Question

Je suis en train de faire quelques CoreGraphics / manipulation CoreImage l'intérieur d'un NSOperation, en utilisant MacRuby. J'ai quelques appels API qui lisent un fichier source dans CG et mis en place un CGImageDestination.

Si je mets le code suivant dans un NSOperation.init, tout fonctionne très bien:

@dest = CGImageDestinationCreateWithURL(@photo.output_url, "public.jpeg" , 1, nil);
@context = CIContext.alloc.init

@cgOriginalImgSrc = CGImageSourceCreateWithURL(@photo.url, nil)
@cgOriginal       = CGImageSourceCreateImageAtIndex(@cgOriginalImgSrc, 0, nil)    

Mais si je mets le même code dans la fonction principale de la NSOperation, je reçois des erreurs de EXC_BAD_ACCESS sporadiques. Et que lors du passage du NSOperation à un NSOperationQueue; si je Invoke principal moi-même, il fonctionne très bien.

A la fin de la principale, je me présente:

CFRelease(@dest)    
CFRelease(@cgOriginalImgSrc)
CGImageRelease(@cgOriginal)

étranger Même est que cela fonctionne dans init, même si init est pas appelée à partir du thread principal (donc pas un problème principal de fil fil / fond, je devine)

Toutes les pensées?

Était-ce utile?

La solution

On dirait un de vos fils fait référence à un objet qui n'existe pas dans la mémoire plus. Essayez de supprimer

CFRelease(@dest)    
CFRelease(@cgOriginalImgSrc)
CGImageRelease(@cgOriginal)

Et voir comment ça se passe. Vous pouvez également essayer de vérifier vos objets dans chaque file d'attente pour voir si elles sont encore disponibles. Enfin, vous pouvez utiliser macrubyd, le débogueur pour MacRuby pour voir ce qui se passe, ou même utiliser GDB et coller le backtrace afin que nous puissions voir ce que le problème est.

Merci,

  • Matt
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top