尝试在iOS上使用CIKernel CoreImage / QuartzCore类时出错

时间:2012-02-16 12:28:06

标签: ios import automatic-ref-counting

您好我正在尝试使用CIKernel

我不明白为什么我会一直收到这些错误:

  

AdriansFilter.m:23:29:错误:类消息的接收者'CIKernel'是前向声明[4]

     

AdriansFilter.m:23:28:{23:28-23:62}:错误:没有已知的选择器'kernelsWithString的类方法:'[4]

我尝试过导入QuartzCore框架,但它仍然无效。我被困了,因为我真的无法确定这里真正的问题。有人可以帮帮我吗?

我的h文件如下所示:

#import <Foundation/Foundation.h>
#import <QuartzCore/QuartzCore.h>

@interface AdriansFilter: CIFilter
{
    CIImage   *inputImage;
    CIColor   *inputColor;
    NSNumber  *inputDistance;
    NSNumber  *inputSlope;
}

@end

我的m文件看起来像这样

#import "AdriansFilter.h"

@implementation AdriansFilter

static CIKernel *hazeRemovalKernel = nil;

- (id)init
{
    if(hazeRemovalKernel == nil)
    {
        NSBundle *bundle = [NSBundle bundleForClass: [self class]];
        NSString *code = [NSString stringWithContentsOfFile: [bundle
                                                                 pathForResource:    @"MyHazeRemoval"
                                                             ofType: @"cikernel"]];
        NSArray *kernels = [CIKernel kernelsWithString: code];

        hazeRemovalKernel = [kernels objectAtIndex:0];
    }

    return [super init];
}

@end

1 个答案:

答案 0 :(得分:2)

您尚未导入定义CIKernel接口的标头。通过搜索Apple developer documentation,我找不到iOS的CIKernel类引用。这告诉我,iOS上没有CIKernel类。

在Xcode中,单击源文件中的CIKernel将文本光标放在那里,然后打开Xcode窗口的右列(也称为Utilities),然后选择快速帮助检查器选项卡。如果所选的类可用于iOS,您应该看到该类的文档以及对哪个头文件声明它的引用。当我尝试在iOS项目中选择的CIKernel类时,我得到“没有快速帮助”。