• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记9 Objective-c Compatibility ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

我们都知道在Swift诞生之前进行IOS开发一直使用Objective-c这门语言。OC和Swift之间需要一个桥接。


IOS中的API基本都是在许多年前由OC写成的,现在在Swift中也可以用,甚至你都看不出区别,非常自然。有一些特殊的类型,在交接两种语言的时候需要注意,这使得使用OC调用IOS的API的时候会比Swift容易很多。

首先是NSString,这是String以前的形式,在IOS中它与Swift中的String是可以相互转换的,甚至可以当它们没有区别,如果有一个参数需要传一个NSString的值,你可以直接传一个String进去,反之亦然,虽然它们二者是完全不同的,但是你依旧可以把它们当成一回事,在Swift中String甚至都不是一个类,只是一个结构体,这都要归功于苹果的工作人员。

数组的老版本NSArray,桥接到Swift就是AnyObject类型的数组,所以只要你在IOS的API中看到AnyObject类型的数组,说明它们以前都是NSArray。

NSDictionary在Swift中被桥接成键是NSObject得子类对象,而值是AnyObject。

然后Int、Float、Double、Bool都是从NSNumber桥接过来的,NSNumber是OC中所有关于数值的对象,Int、Float、Double这些和C语言中的int、float、double也是桥接好的,所以如果api中有个一c语言的int参数,它也可以接受Swift中的一个Int


当然如果你很确定你需要什么数据类型的话,可以做类型转换。比如length是NSString的属性,在String中并不存在,它在String中不存在是有原因的,新的String会处理Unicode长度可变的问题,而老的NSString没有很好的处理这个问题。

字典的桥接规则令人有些迷惑,因为我们常用的键值Sting、Int等根部就不是对象,更不可能是NSObject,但是你依旧可以使用,这是因为数值类型都被桥接到了NSObject的子类中。绝大多数时候你是看不到这种桥接的,因为它们都是自动的。

我们都知道在Swift诞生之前进行IOS开发一直使用Objective-c这门语言。OC和Swift之间需要一个桥接。


IOS中的API基本都是在许多年前由OC写成的,现在在Swift中也可以用,甚至你都看不出区别,非常自然。有一些特殊的类型,在交接两种语言的时候需要注意,这使得使用OC调用IOS的API的时候会比Swift容易很多。

首先是NSString,这是String以前的形式,在IOS中它与Swift中的String是可以相互转换的,甚至可以当它们没有区别,如果有一个参数需要传一个NSString的值,你可以直接传一个String进去,反之亦然,虽然它们二者是完全不同的,但是你依旧可以把它们当成一回事,在Swift中String甚至都不是一个类,只是一个结构体,这都要归功于苹果的工作人员。

数组的老版本NSArray,桥接到Swift就是AnyObject类型的数组,所以只要你在IOS的API中看到AnyObject类型的数组,说明它们以前都是NSArray。

NSDictionary在Swift中被桥接成键是NSObject得子类对象,而值是AnyObject。

然后Int、Float、Double、Bool都是从NSNumber桥接过来的,NSNumber是OC中所有关于数值的对象,Int、Float、Double这些和C语言中的int、float、double也是桥接好的,所以如果api中有个一c语言的int参数,它也可以接受Swift中的一个Int


当然如果你很确定你需要什么数据类型的话,可以做类型转换。比如length是NSString的属性,在String中并不存在,它在String中不存在是有原因的,新的String会处理Unicode长度可变的问题,而老的NSString没有很好的处理这个问题。

字典的桥接规则令人有些迷惑,因为我们常用的键值Sting、Int等根部就不是对象,更不可能是NSObject,但是你依旧可以使用,这是因为数值类型都被桥接到了NSObject的子类中。绝大多数时候你是看不到这种桥接的,因为它们都是自动的。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
一些Objective-C学习资源发布时间:2022-07-12
下一篇:
iOS开发技巧《EffectiveObjective-C2.0》读后总结发布时间:2022-07-12
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap