'GPUImageOutput <GPUImageInput>'没有可见的@interface声明select器'imageFromCurrentlyProcessedOutputWithOrientation:'

我负责pipe理其他人在我公司创build的旧项目,现在我必须使用XCode 5.1进行一些更改

事情是,即使它一年前(2013年春)编译好,它现在不编译。 该项目包含GPUImage库子项目。 这是XCode产生的错误:

'GPUImageOutput <GPUImageInput>'没有可见的@interface声明select器'imageFromCurrentlyProcessedOutputWithOrientation:'

当我尝试编译这两行时:

if( self.grayScaleOutput ) { photo = [grayscaleFilter imageFromCurrentlyProcessedOutputWithOrientation:UIImageOrientationUp]; } else { photo = [blendFilter imageFromCurrentlyProcessedOutputWithOrientation:UIImageOrientationUp]; } 

我甚至让Xcode 5.1改变了我的项目的一些设置(它build议我这样做),但没有运气。 任何提示? 任何设置我需要激活? 一些ARC的苦难,它可能仍然在我的旧的代码行?

注意:我已经replace了我使用的1年前的GPUImage库,以及刚刚从GitHUB下载的GPUImage库。 也没有运气。

对,上周我改变了这个界面, 这里我解释一下 。

简而言之,GPUImageFilters现在使用caching的帧缓冲区。 这意味着从他们的图像捕获略有改变。 为了让人们意识到这一点,我重新命名了所涉及的方法,虽然也许我可以find另一种方法来警告你。 新的等价物是-imageFromCurrentFramebufferWithOrientation:但在使用之前,您需要在筛选器上调用-useNextFrameForImageCapture以指示您将在下次运行此筛选器时提取图像。 这需要在使用GPUImagePicture源上的-processImage之前调用,或者在使用-imageFromCurrentFramebufferWithOrientation:在从video源拉取的filter之前-imageFromCurrentFramebufferWithOrientation:

这是必需的,因为框架需要知道将caching的帧caching保存比平时长一些,而不是立即将其返回到caching以节省内存。 这是在照片捕捉过程中自动完成的,或者使用像-imageByFilteringImage:这样的便捷方法时自动完成的,但需要像在代码中一样提取图像时手动触发。