【问题标题】:iOS error: No visible @interface for 'GPUImageSmoothToonFilter' declares the selector 'setBlurSize'iOS 错误:“GPUImageSmoothToonFilter”没有可见的@interface 声明选择器“setBlurSize”
【发布时间】:2017-10-25 08:50:58
【问题描述】:

当尝试在 Xcode 8.3.2 上构建时,我收到以下错误:

            [(GPUImageSmoothToonFilter *)filter setBlurSize:filterSettingsSlider.value];

错误:“GPUImageSmoothToonFilter”没有可见的@interface 声明选择器“setBlurSize”

我该如何解决?


另一个问题(类似于上面的问题)是这样的:

                tempImage = [lookupFilter imageFromCurrentlyProcessedOutput];

错误:“GPUImagelookupFilter”没有可见的@interface 声明选择器“imageFromCurrentlyProcessedOutput”

我该如何解决这个问题?

谢谢!

【问题讨论】:

  • 您将需要提供更多代码来显示这些对象是如何实例化的。对于初学者。 GPUImageSmoothToonFilter.h 没有声明方法setBlurSize。它似乎不是您认为的对象类型。
  • 杰克,也许这就是问题所在,setBlurSize 没有声明?我在 .h 或 .m 的任何地方都看不到它。它仅在该代码实例中显示。还提供了截图。
  • 这就是“No visible @interface for '...' 声明选择器 '...' 的意思。.h 不包含您尝试使用的方法。有时它在.m,这意味着它只能在.m内部使用,但它是一个私有方法,所以你不能在外部使用它。如果你使用的是子类,你可以访问父类的公共方法,即使它们是'没有在 .h 中明确声明。但是,在这种情况下,setBlurSize 不是您正在使用的类的方法。也许您正在使用的类上有一个具有该方法的属性?您在哪里找到的那个方法?
  • @JakeT。很奇怪,其他情况下的 setBlurSize 不会抛出这个错误。它们都在同一个 .m 文件中。仅在这种情况下:caseGPUIMAGE_GAUSSIAN: {} 发生。如果 GPUIMAGE_ZOOMBLUR:{} 不抛出该错误,即使使用了同一行代码。

标签: ios xcode gpuimage


【解决方案1】:

它告诉你,因为 GPUImageSmoothToonFilter 没有 setBlurSize: 方法。你可以看到here

上面的代码似乎是从框架附带的 FilterShowcase 示例应用程序中复制和粘贴的(加上您的isPurchased 检查)。我的猜测是你从一个非常旧的框架版本中复制了它,大约在 2013 年左右,因为 this commit 在 2013 年 10 月在许多地方重命名了 blurSize 属性。

如果您使用的是现代版本的框架,并且您的应用程序基于 FilterShowcase 示例,我建议您查看该示例的最新版本以了解现在的接口。您也可以查看代码中的接口或查看最新的文档。

【讨论】:

  • 如果我把那个.m 发给你让你检查,你可以吗?你是对的,我复制/粘贴了最新版本的框架,因为当我升级到 Xcode 8.3.2 时,旧的 GPUImage 框架抛出了更多错误。所以我没有更改代码中的任何内容,只是将新框架复制/粘贴到源代码目录中。如果我发送.m,您可以检查与新框架兼容的新接口以消除所有错误。好像是个小问题,你说呢?
  • @itzo - 老实说,我不是开发这个应用程序获得报酬的人,而且我真的没有时间浏览你的所有代码。最好花时间通读 FilterShowcase 示例应用程序和文档并自己完成。鉴于如果你做错了它不会编译,这很容易检查。
  • 我明白了。我会检查,但如果我需要任何澄清,我可以指望你吗?伊佐
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-05
  • 1970-01-01
  • 2012-10-28
相关资源
最近更新 更多