【发布时间】:2014-06-13 00:02:03
【问题描述】:
真的有必要像我在下面的双打中那样桥接到目标 c 吗?似乎在操场上没有这一步就可以工作,但不能在常规的 swift 文件中编译。
有没有更清洁的方法?
var prevX = 0.0
var prevY = 0.0
var count = 0
for item : AnyObject in myGraph.vertices {
count++
if let v = item as? Vertex {
x = Double(x)
y = Double(y)
x = x - width / 2.0
y = y - width / 2.0
//var fwidth = Float(width)
var rect = CGRect()
rect.origin.x = x.bridgeToObjectiveC().floatValue
rect.origin.y = y.bridgeToObjectiveC().floatValue
rect.size.width = width.bridgeToObjectiveC().floatValue
rect.size.height = rect.size.width
【问题讨论】:
-
看来和目标是64位还是32位有关
-
Double 是一个 64 位数字,一直都是。浮点数是一个 32 位数字,一直都是。见en.wikipedia.org/wiki/Double-precision_floating-point_format 和en.wikipedia.org/wiki/Single-precision_floating-point_format
-
CGFloat(CGRect 的组成部分)在为 32 位架构构建时为 32 位,在为 64 位架构构建时为 64 位。这会让人们感到惊讶。我是trying to get a handle on dealing with this in current Swift,但如果 Apple 在未来的 Swift 版本中为此添加一些更有用的粘合剂,我不会感到惊讶。
-
没关系(浮点 32 和双精度 64)。但由于某种原因,从未在 Objective C 中处理过这个问题。
标签: cocoa-touch swift