//Objective-C
UIColor *color = [UIColor colorWithRed:0.5 green:0.0 blue:0.5 alpha:1.0];
在 Swift 中,你应该这样做:
复制代码//Swift
let color = UIColor(red: 0.5, green: 0.0, blue: 0.5, alpha: 1.0)
访问属性
在 Swift 中访问和设置 Objective-C 对象的属性时,使用点语法:
复制代码// Swift
myTextField.textColor = UIColor.darkGrayColor()
myTextField.text = "Hello world"
if myTextField.editing {
myTextField.editing = false
}
当 get 或 set 属性时,直接使用属性名称,不需要附加圆括号。注意,darkGrayColor后面附加了一对圆括号,这是因为darkGrayColor是UIColor的一个类方法,不是一个属性。
在 Objective-C 中,一个有返回值的无参数方法可以被作为一个隐式的访问函数,并且可以与访问器使用同样的方法调用。但在 Swift 中不再能够这样做了,只有使用@property关键字声明的属性才会被作为属性引入。
方法
在 Swift 中调用 Objective-C 方法时,使用点语法。
当 Objective-C 方法转换到 Swift 时,Objective-C 的selector的第一部分将会成为方法名并出现在圆括号的前面,而第一个参数将直接在括号中出现,并且没有参数名,而剩下的参数名与参数则一一对应的填入圆括号中。
举个例子,你在使用 Objective-C 时会这样做:
复制代码//Objective-C
[myTableView insertSubview:mySubview atIndex:2];
在 Swift 中,你应该这样做:
复制代码//Swift
myTableView.insertSubview(mySubview, atIndex: 2)
如果你调用一个无参方法,仍必须在方法名后面加上一对圆括号
复制代码//Swift
myTableView.layoutIfNeeded()
id 兼容性(id Compatibility)
Swift 包含一个叫做AnyObject的协议类型,表示任意类型的对象,就像 Objective-C 中的id一样。AnyObject协议允许你编写类型安全的 Swift 代码同时维持无类型对象的灵活性。因为AnyObject协议保证了这种安全,Swift 将 id 对象导入为 AnyObject。








