【问题标题】:Converting obj-c code to swift 2 block issue将 obj-c 代码转换为 swift 2 块问题
【发布时间】:2016-03-03 04:04:27
【问题描述】:

我在目标 C 中有以下代码。

[pixelData processPixelsWithBlock:^(JGPixel *pixel, int x, int y) {

}];

现在,对我来说,快速的等价物是

pixelData.processPixelsWithBlock({(pixel: JGPixel, x: Int, y: Int) -> Void in

})

但是,这会引发

的错误

无法将类型 '(JGPixel, Int, Int) -> Void' 的值转换为预期的参数类型 '((UnsafeMutablePointer, Int32, Int32) -> Void)!'

谁能帮助解释我哪里出错了,以及我如何才能了解有关此错误的更多信息。谢谢!

【问题讨论】:

  • JGPixel是Obj-C中的类还是结构?

标签: ios objective-c swift


【解决方案1】:

您需要使用withUnsafeMutablePointer 中记录的here 函数。大致如下:

var pixel: JGPixel = // whatever
withUnsafeMutablePointer(&pixel, { (ptr: UnsafeMutablePointer<JGPixel>) -> Void in
    pixelData.processPixelsWithBlock({(ptr, x: Int, y: Int) -> Void in

    })
})

编辑:刚刚意识到我忘记将 ptr 正确传递给函数。固定在上面。

【讨论】:

  • 嗨。这似乎是在正确的轨道上,但现在它抛出错误'变量在其自己的初始值内使用' - 我知道它在抱怨,因为我正在使用 &pixel,在我声明它的同一行中 -我该如何解决这个问题?谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多