我在继承一个Objective-c类并重写一个超类方法:

override func drawWithTransform(m: CGAffineTransform)
{
     CGPathMoveToPoint(path, &m, 5, 10);
}


但是我收到一个编译错误:无法分配给'CGAffineTransform'类型的不可变值

什么是正确的方法?

最佳答案

您不能将常量传递给UnsafePointer参数。并且功能参数默认情况下是常量。

解决方法是,可以使用variable parameters

override func drawWithTransform(var m: CGAffineTransform) {
     //                         ^^^^
     CGPathMoveToPoint(path, &m, 5, 10);
}


或者,预先将其复制到变量中:

override func drawWithTransform(m: CGAffineTransform) {
     var _m = m
     CGPathMoveToPoint(path, &_m, 5, 10);
}

关于ios - 如何在Swift中将CGAffineTransform传递为函数参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32108583/

10-10 20:11