ウェブカメラの動画を視聴できるアプリを開発中です。ここで、バックグラウンドスレッドを使用して新しい録画ビデオ機能を追加したいと思います。
.hファイル内
@property (nonatomic, retain) UIImage *image;
@property (nonatomic, retain) NSData *imageData;
.mファイル内。ユーザーが記録ボタンを押すと、ImageDataのDocumentsDirへの保存が開始されます
@synthesize image;
@synthesize imageData
...
- (void) playVideo:(NSData *)data {
...
// play video code
CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault;
CGDataProviderRef provider = CGDataProviderCreateWithCFData(data);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGImageRef cgImage = CGImageCreate(width, hieght, 8, 24,
bpp * width, colorSpace, bitmapInfo,
provider, NULL, NO, kCGRenderingIntentDefault);
CGColorSpaceRelease(colorSpace);
[videoImage = [setImage: UIImage imageWithCGImage:cgImage]];
CGImageRelease(cgImage);
CGDataProviderRelease(provider);
// play video code end
...
if(record == TRUE) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
(unsigned long)NULL), ^(void) {
image = [UIImage imageWithCGimage:cgImage];
imageData = [UIImageJPEGRepresentation(image, 1)];
[imageData writeToFile:DirPath atomically:NO];
});
}
}
これまでのところ、ビデオコードの再生は正常に機能しているようです。次に、その下にスレッドを追加すると、エラーメッセージが表示されます
[Not a type retain]: message sent to deallocated instance
[Not a type class]: message sent to deallocated instance
スレッドでimage = [UIImage imageWithCGimage:cgImage];
なぜこれを引き起こすのか教えていただけますか?またはこれを行う他の方法があります。ありがとう。