美文网首页
iOS中内存管理的坑

iOS中内存管理的坑

作者: 小东邪啊 | 来源:发表于2017-08-22 13:33 被阅读0次

    case 1 : 使用CIContext作为全局对象。渲染时一直报错。错误代码如下:

     if (ciContext == nil) {                                                    kCIContextOutputColorSpace : (__bridge id)rgbColorSpace}];
            EAGLContext *eaglContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
             ciContext = [CIContext contextWithEAGLContext:eaglContext options:@{kCIContextWorkingColorSpace : [NSNull null]}];
        }
    
        [ciContext render:ciImage toCVPixelBuffer:pixelBuffer bounds:cropRect colorSpace:nil];
    
    
    cicontextError
    原因:项目使用MRC,需要手动管理部分对象内存,由于OC中一般对象初始化后系统内部会自行retain,如NSString,UIImage... 它们只需要完成自己对应初始化方法,但是CIContext初始化方法中并未实现将CIContext对象retain,所以使用出错。
    解决方案:初始化完成后手动retain.[ciContext retain]; 一般来说只要碰到如上图的情况在MRC项目中较多,往往是内存管理出了问题,因为众多OC对象无法一一记牢,但可以记住解决问题的模式。

    相关文章

      网友评论

          本文标题:iOS中内存管理的坑

          本文链接:https://www.haomeiwen.com/subject/amgkdxtx.html