我正在开发一个可以观看网络摄像头视频的应用程序。现在我想通过使用后台线程添加一个新的录制视频功能。
在 .h 文件中
@property (nonatomic, retain) UIImage *image;
@property (nonatomic, retain) NSData *imageData;
在 .m 文件中。当用户按下记录按钮时,它开始将 ImageData 保存到 Documents Dir
@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];
你能告诉我为什么会这样吗?或有其他方法可以做到这一点。谢谢。