【发布时间】:2014-08-21 17:25:50
【问题描述】:
我最近被介绍给 swift。
一个问题,什么时候使用 CGPoint,什么时候应该使用 CGPointMake ?
我已经互换了这两个语句,它们都返回了相同的结果
self.anchorPoint = CGPointMake(0.5, 0.5)
self.anchorPoint = CGPoint(0.5, 0.5)
谢谢
【问题讨论】:
我最近被介绍给 swift。
一个问题,什么时候使用 CGPoint,什么时候应该使用 CGPointMake ?
我已经互换了这两个语句,它们都返回了相同的结果
self.anchorPoint = CGPointMake(0.5, 0.5)
self.anchorPoint = CGPoint(0.5, 0.5)
谢谢
【问题讨论】:
Swift 中的每个结构都有一个自动创建的成员初始化器。所以,因为struct CGPoint 存在成员x 和y,你可以这样做:
self.anchorPoint = CGPoint(x: 0.5, y: 0.5)
(请注意,您实际上不能执行 CGPoint(0.5, 0.5) ——这会导致编译错误,因为初始化程序需要所有参数的标签,除非另有声明。)
在 Swift 1.x-2.x 中,CGPointMake 是从该 API 的 C 版本导入的函数。在 Swift 3 中,初始化表单是创建 CGPoint 的唯一方法——这是使 CoreGraphics 更加 Swifty 的更改之一。
【讨论】:
self.anchorpoint = (CGPoint){ 0.5, 0.5 };,但这是相对较新的。
{.x = 0.5, .y = 0.5} 语法。
CGPoint p = {.x = 0.5, .y = 0.5},但不能用作赋值中的表达式。 self.anchorpoint = {.x = 0.5, .y = 0.5} 无法编译。
当你 cmd-click 类型时,Xcode 会打开包含定义的文件。
CGPoint 是一个结构体:
struct CGPoint {
var x: CGFloat
var y: CGFloat
}
而CGPointMake 只是一个创建CGPoint 并返回它的函数:
func CGPointMake(x: CGFloat, y: CGFloat) -> CGPoint
【讨论】: