使用Beta 4,我有这个代码运行良好:
var red, green, blue, alpha: UnsafePointer<CGFloat>
red = UnsafePointer<CGFloat>.alloc(1)
green = UnsafePointer<CGFloat>.alloc(1)
blue = UnsafePointer<CGFloat>.alloc(1)
alpha = UnsafePointer<CGFloat>.alloc(1)
myColor.getRed(red, green: green, blue: blue, alpha: alpha)
CGContextSetRGBStrokeColor(context, red.memory, green.memory, blue.memory, 1)
red.dealloc(1)
green.dealloc(1)
blue.dealloc(1)
alpha.dealloc(1)
Run Code Online (Sandbox Code Playgroud)
现在使用Beta5,我得到错误"'UnsafePointer.Type'没有名为'alloc'的成员".
我要做的就是根据UIColor设置CGContext的笔触颜色.我现在应该怎么做?"withUnsafePointers"函数有点儿玩笑 - 它给出了奇怪的错误,它只需要最多三个不安全的指针,而我在这种情况下尝试使用四个.
jst*_*stn 25
这很有效,Swift很聪明,知道如何处理&运营商:
let color = UIColor.purpleColor()
var r:CGFloat, g:CGFloat, b:CGFloat, a:CGFloat = 0
color.getRed(&r, green: &g, blue: &b, alpha: &a)
CGContextSetRGBStrokeColor(c, r, g, b, a)
Run Code Online (Sandbox Code Playgroud)
如果您真的想自己做分配,请使用您喜欢的味道并构造指针,如下所示:
let p = UnsafeMutablePointer<CGFloat>(calloc(1, UInt(sizeof(CGFloat))))
// later don't forget to free(p)
Run Code Online (Sandbox Code Playgroud)
UnsafePointer<T>不再有会员.alloc.请UnsafeMutablePointer<T>.alloc改用.例如,以下blankof()作为通用初始化器.
func blankof<T>(type:T.Type) -> T {
var ptr = UnsafeMutablePointer<T>.alloc(sizeof(T))
var val = ptr.memory
ptr.destroy()
return val
}
var red = blankof(CGFloat)
var green = blankof(CGFloat)
var blue = blankof(CGFloat)
var alpha = blankof(CGFloat)
color.getRed(&red, green:&green, blue:&blue, alpha:&alpha)
CGContextSetRGBStrokeColor(context, red, green, blue, 1)
// no need to dealloc because they are all structs, not pointers
Run Code Online (Sandbox Code Playgroud)