我如何使用Swift调用它?似乎无法获得正确的语法!
@property (nonatomic, copy) void(^testBlock)(UIImage *image);
到目前为止,我已经:
imag.testBlock({(image:UIImage)->Void in
println("test")
})
但它给了我一个错误:
(UIImage) - > Void不能转换为UIImage
答案 0 :(得分:1)
您的testBlock
是绑定到函数的Objective-C属性。那么,在您的问题代码中,您是要分配testBlock
还是要调用绑定到testBlock
的函数?
imag.testBlock = { (image:UIImage) -> Void in
println ("test")
}
然后使用:
imag.testBlock (/* call with some image */)
答案 1 :(得分:0)
定义闭包时: 闭包通常用大括号{}括起来,并由函数类型() - >定义。 (),其中 - >分隔参数和返回类型,后跟in关键字,用于将闭包头与其主体分开。
{ (params) -> returnType in
statements
}
请参阅:http://fuckingswiftblocksyntax.com/
所以在你的情况下你不应该使用Void作为returnType,当你想要返回一个UIImage
imag.testBlock( { (image: UIImage) -> UIImage in
return UIImage(....)
}
答案 2 :(得分:0)
您的Objective-C属性是一个采用UIImage
参数的块。当你这样做
imag.testBlock({(image:UIImage)->Void in
println("test")
})
您正在调用该区块并传入另一个区块,这对您的情况没有意义。
您需要的只是imag.testBlock(UIImage(named: "some_image"))