使用swift语言进行IOS应用开发

本文详细介绍了如何在Swift中使用Objective-C的API和框架,包括对象实例化、属性和方法的存取、扩展功能、块与闭合的转换、继承Objective-C类和使用协议。同时阐述了Swift与Objective-C之间的桥接、与C API的交互以及在Interface Builder中的集成,最后讨论了在同一工程中混合使用Swift与Objective-C的实践方法。
摘要由CSDN通过智能技术生成

        在Swift中能够直接使用Objective-C语言提供的api (包括系统框架与自己的定制代码),也能够在Objective-C中使用Swift提供的类和api ,还能够在一个工程中同时混合使用Swift 和Objective-C两种语言,两种语言之间能够互通和互用。

      任意Objective-C的框架或C库(包括所有的Objective-C系统框架,例如Foundation、UIKit、SpriteKit以及系统提供的公共c库)作为模块被直接导入Swift 供Swift语言使用。

      例如为了使用Foundation框架,只需简单的在要使用Foundation框架的Swift文件的顶部添加一个如下的输入声明语句:

      import Foundation

      这样Foundation 框架包含的所有api包括NSDate、NSURL、NSMutableData以及所有的方法、属性和类别都能被该Swift文件直接使用。

一 、与Objective-C 语言和框架的集成

1.1 对象的实例化

         为了在  Swift 中使用某个Objective-C 类,可以使用Swift语法调用它的某个初始化方法进行实例化。

    UITableView *myTableView = [[UITableViewalloc]initWithFrame:CGRectZerostyle:UITableViewStyleGrouped];

         以上的一个Objective-C 对象的初始化方法在Swift语言中需要这样调用。

    let myTableView:UITableView =UITableView(frame:CGRectZero,style: .Grouped)

       由于Swift语言自动处理一个实例的内存分配,因此在Swift语言中不需要使用alloc进行内存分配。Objective-C 语言中作为实例初始化方法名字指示的init或 initWith前缀在Swift的初始化语法中也不需要,而用类的名字作为实例初始化方法的名字,跟着Objective-C 语言实例初始化方法名字initWith后面的单词作为Swift的初始化方法的第一个参数使用。

    在Swift语言中,实例的初始化语法中对象的类型也可以省掉(如上例的UITableView),Swift可以自动正确地推断其类型,如下所示:

      let myTableView=UITableView(frame:CGRectZero,style: .Grouped)

       为了一致和简化,Objective-C 的工厂方法在导入Swift时被自动映射为Swift语言的便利初始化方法。例如在Objective-C中如下调用一个工厂方法。 

    UIColor *color = [UIColorcolorWithRed:0.5green:0.0blue:0.5alpha:1.0];

    在Swift语言中,应该这样调用:

    let  color =UIColor(red:0.5,green:0.0,blue:0.5,alpha:1.0)

1.2 属性和方法的存取

     在Swift中使用点语法来存取和设置Objective-C 对象的属性和调用方法。

     对于属性的存取在Swift中利用点语法直接使用属性的名字来存取该属性,如:

myTextField.textColor = UIColor.darkGrayColor()

myTextField.text = "Hello world"

    对于方法,Objective-C方法名字的第一部分在Swift中直接作为方法名,其余作为Swift方法的参数包括在方法的圆括号中。例如下面的一个Objective-C 方法。

     [myTableViewinsertSubview:mySubviewatIndex:2];

     在Swift中如下调用。

     myTableView.insertSubview(mySubview,atIndex:2)

    在Objective-C中的id类型 在导入Swift时被映射为Swift语言的AnyObject类型。

    在Objective-C中的指针在导入Swift时被映射为Swift语言的optional类型。

   1.3 扩展功能

     能够使用扩展为Objective-C语言中已定义的类、结构和枚举(包括系统框架中或自己定义的)添加和扩展功能。

     如使用扩展来添加属性(包括类和静态属性),扩展的属性必须是计算属性。如下所示使用扩展为CGRect类添加了一个计算属性area

extension CGRect {

   var area:CGFloat {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值