Swift和Objective-C可以进行互操作,也就是说可以在Objective-C项目中使用Swift代码,反过来也可以。当然,这种互操作之间最重要的是可以在Swift中调用Objective-C的接口,毕竟目前绝大部分接口都是通过Objective-C提供的。
初始化
在Swift中实例化一个Objective-C的类时,可以用Swift语法调用它的一个初始化器。Objective-C的初始化方法被分割成关键字。例如“initWith”变成“init”,而剩下的部分作为方法的参数名。
Objective-C的代码:
let myTableView: UITableView = UITableView(frame: CGRectZero,style: .Grouped)
在Swift中不需要调用alloc
方法,它会自动处理对象的创建功能。注意:Swift不会显式的调用init
方法。
定义变量或者常量的时候,可以省略它的类型,Swift会自动识别。
UIColor *color = [UIColor colorWithRed: 0.5 green: 0.0 blue: 0.5 alpha: 1.0];
转换为Swift:
myTextField.textColor = UIColor.darkGrayColor()
myTextField.text = "Hello world"
if myTextField.editing {
myTextField.editing = false
}
访问和设置属性的时候不需要使用圆括号,上面darkGrayColor
之所以有括号,是因为调用的是UIColor
的类方法,而不是属性。
Objective-C中不需要参数并且有一个返回值的方法,可以被当作隐含的获取方法(getter
),从而使用点操作符。但是在Swift中点操作符只能访问Objective-C中使用@property
定义的属性。
方法调用
在Swift中使用点操作符调用Objective-C中的方法。
Objective-C的方法在Swift中调用的时候,它的第一部分成为Swift的基本方法出现在括号之前。然后函数的第一个参数没有名字,剩下的部分作为Swift函数对应的参数名称。
Objective-C语法:
myTableView.insertSubview(mySubview atIndex: 2)
myTableView.layoutIfNeeded()原文链接:https://www.f2er.com/swift/327526.html