如果我调试我的应用程序。该应用程序在这行代码中崩溃,我收到此警告:
警告:
Local declaration of 'imgView' hides instance variable
代码行:
[brightnessFilter forceProcessingAtSize:imgView.sizeInPixels];
代码块:
- (IBAction)sliderBrightness:(id)sender {
UIImage *inputImage = imgView.image;
sourcePicture = [[GPUImagePicture alloc] initWithImage:inputImage smoothlyScaleOutput:YES];
brightnessFilter = [[GPUImageBrightnessFilter alloc] init];
GPUImageView *imgView = (GPUImageView *)self.view;
[brightnessFilter forceProcessingAtSize:imgView.sizeInPixels];
[sourcePicture addTarget:brightnessFilter];
[brightnessFilter addTarget:imgView];
[sourcePicture processImage];
}
有人可以帮我解决这个问题吗?
最佳答案
安德烈为您提供了基础知识。非常具体。
这是您当前的代码:
- (IBAction)sliderBrightness:(id)sender {
UIImage *inputImage = imgView.image; // <--- This line refers to an instance var
sourcePicture = [[GPUImagePicture alloc] initWithImage:inputImage smoothlyScaleOutput:YES];
brightnessFilter = [[GPUImageBrightnessFilter alloc] init];
GPUImageView *imgView = (GPUImageView *)self.view; <--- This line defines a local
[brightnessFilter forceProcessingAtSize:imgView.sizeInPixels];
[sourcePicture addTarget:brightnessFilter];
[brightnessFilter addTarget:imgView];
[sourcePicture processImage];
}
查看我添加的以“<--- This line”开头的注释。第一个标记您对实例变量 imgView 的引用。
第二个注释标记了一个地方,您可以在其中定义一个具有相同名称 imgView 的不同局部变量。
如果您打算使用不同的局部变量,请将该名称更改为其他名称,例如
GPUImageView *theGPUimgView = (GPUImageView *)self.view;
如果您打算更改实例变量,则将其赋值,并去掉变量声明:
imgView = (GPUImageView *)self.view;
我猜您想要第二种情况,即更改实例变量的内容,但我不确定。这是你的代码。
关于ios - 'imgView' 的本地声明隐藏实例变量(应用程序崩溃),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23632088/