当我们pod下GPUImage 后 如果调用摄像头的代码,到启动摄像头会延迟很久,系统虽然不会报错,但是影响用户体验!!! 总结下来! 一共两个问题!!输出如下!!! Main Thread Checker: UI API called on a background thread: -[UIView layer] PID: 901, TID: 68934, Thread name: (none), Queue name:
Main Thread Checker: UI API called on a background thread: -[UIView bounds] PID: 901, TID: 68934, Thread name: (none), Queue name: 总结一波!! 就是[UIView layer]和[UIView bounds] 不在主线程渲染!!
解决方法
点击紫色警告的地方,系统自动跳到GPUImageView这个类 找到警告的位置分别是! [[[GPUImageContext sharedImageProcessingContext] context] renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer*)self.layer]; 和 CGSize currentViewSize = self.bounds.size;
添加一个@synthesize 在GPUImageView.h的地方的地方添加一个@property 给自己的currentlayer附值 在运行程序就会发现紫色警告少了一个!!bounds的还在,那么接下来解决bounds的问题!! 同理GPUImageView.h声明一个currentFrame的变量
GPUImageView.m
主线程的地方给他附上初始值 警告的地方使用上
再次编译运行,紫色警告都消失了并且启动速度比之前大幅度提高
注意??!!!我们修改的是pod里面的GPUImage文件,如果下次在pod install 的时候 他又会还原成最新的GPUImage,那么解决办法有一个就是我们把GPUImage下载到本地!!
|