【发布时间】:2025-12-26 10:30:12
【问题描述】:
我正在使用 QCAR 库,并且我在每一帧中都从库中获取相机帧。
我试图通过在我的UIImageView* mCurFrameView 上使用setImage 来显示这个框架。起初这是可行的,我可以看到帧运行平稳,但 20 秒后它崩溃了。
有时我会收到EXC_BAD_ACCESS
int retVal = UIApplicationMain(argc, argv, nil, nil);
有时它只是 gdb 并暂停。
有时在他崩溃之前我会得到
2012-02-24 15:59:15.726 QRAR_nextGen[226:707] Received memory warning.
这是我的代码:
-(void)SaveCurrentFrame:(UIImage*)image
{
mCurFrameView.image = image;
}
- (void)renderFrameQCAR
{
cout<<"I am starting"<<endl;
QCAR::State state = QCAR::Renderer::getInstance().begin();
QCAR::setFrameFormat(QCAR::RGB888, true);
const QCAR::Image *image = state.getFrame().getImage(1);// 0: YUV, 1: Grayscale image
if (image)
{
const char *data = (const char *)image->getPixels();
int width = image->getWidth(); int height = image->getHeight();
colorSpace = CGColorSpaceCreateDeviceRGB();
bitmapInfo = kCGBitmapByteOrderDefault;
provider = CGDataProviderCreateWithData(NULL, data, width*height*3, NULL);
intent = kCGRenderingIntentDefault;
imageRef = CGImageCreate(width, height, 8, 8*3, width * 3, colorSpace, bitmapInfo, provider, NULL, NO, intent);
mCurFrame = [UIImage imageWithCGImage:imageRef];
cout<<"I am waiting"<<endl;
[self performSelectorOnMainThread:@selector(SaveCurrentFrame:) withObject:mCurFrame waitUntilDone:YES];
}
我尝试了几件事:显示 CALayer 以显示相机、释放、保留、自动释放、定义和不定义属性和合成。
如果有人能帮助我,我将不胜感激。我正在失去理智。非常感谢。
【问题讨论】:
标签: ios memory-leaks uiimage vuforia