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

Isa*_*aac 4 cocoa-touch compiler-errors objective-c ios gpuimage

我负责一段时间以前在我公司创建的旧项目,现在我必须使用XCode 5.1进行一些更改

问题是,即使它在一年前(2013年春天)编译好了,它现在也没有编译.该项目包含GPUImage库子项目.这是XCode产生的错误:

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

当我尝试编译这两行时:

if( self.grayScaleOutput )
{
    photo = [grayscaleFilter imageFromCurrentlyProcessedOutputWithOrientation:UIImageOrientationUp];
}
else
{
    photo = [blendFilter imageFromCurrentlyProcessedOutputWithOrientation:UIImageOrientationUp];
}
Run Code Online (Sandbox Code Playgroud)

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

注意:我已经用我刚刚从GitHUB下载的那个库替换了我正在使用的1年历史的GPUImage库.也没有运气.

Bra*_*son 18

是的,我上周改变了这个界面,原因我在这里解释.

简而言之,GPUImageFilters现在使用缓存的帧缓冲区.这意味着从它们捕获的图像略有改变.为了让人们意识到这一点,我重新命名了所涉及的方法,尽管我可能已经找到另一种方式来警告你.新的等价物是-imageFromCurrentFramebufferWithOrientation:,但在使用之前,您需要调用-useNextFrameForImageCapture过滤器以指示您将在下次运行此过滤器时提取图像.这需要在使用-processImageGPUImagePicture源之前调用,或者在使用-imageFromCurrentFramebufferWithOrientation:来自视频源的过滤器之前调用.

这是必需的,因为框架需要知道保持缓存的帧缓冲区的时间比正常情况稍长,而不是立即将其返回缓存以节省内存.这是在照片捕获期间或使用便利方法时自动完成的-imageByFilteringImage:,但需要在提取代码时提取图像时手动触发.