当前位置:  开发笔记 > IOS > 正文

不能调用非函数类型'CIImage'的值吗?

如何解决《不能调用非函数类型'CIImage'的值吗?》经验,为你挑选了1个好方法。

这段代码编译得很好

let ciImage = CIImage(image:UIImage())

然而,当我把它移动到延伸 UIImage

extension UIImage {
    func foo() {
        let ciImage = CIImage(image:UIImage()) // compile error
    }
}

我得到以下编译错误

Cannot call value of non-function type 'CIImage?'

为什么?


使用Xcode Playground 7.1.1进行测试.和Swift 2.1



1> matt..:

这是因为,一旦进入UIImage,该术语CIImage被视为UIImage 的CIImage 属性,因为隐含self为消息接收者 - 换句话说,Swift会让你CIImage进入self.CIImage并且从那里开始全部下坡.

您可以通过Swift使用模块命名空间消除歧义来解决这个问题:

extension UIImage {
    func foo() {
        let ciImage = UIKit.CIImage(image:UIImage())
    }
}

编辑在Swift 3中,这个问题将消失,因为所有属性都将以小写字母开头.该属性将被命名ciImage,并且不会与CIImage类混淆.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有