是bridgeToObjectiveC真的需要吗?

时间:2014-07-17 20:01:39

标签: ios swift

在Swift bridgeToObjectiveC()String之间转换真的需要NSString吗? bridgeToObjectiveC()的行为是什么?由于我已阅读过很多地方,因此无需转换为快速StringNSString

3 个答案:

答案 0 :(得分:3)

如果您要导入String框架,则swift NSStringFoundation之间的类型转换是隐式的。如果您使用import Foundation,则无需使用{{ 1}} for strings.From swift guide

  

Swift自动在String类型和NSString之间架起桥梁   类。这意味着您可以在任何地方使用NSString对象   使用Swift String类型代替并获得两者的好处   types- String类型的插值和Swift设计的API和   NSString类的广泛功能。出于这个原因,你应该   几乎从不需要在您自己的代码中直接使用NSString类。   事实上,当Swift导入Objective-C API时,它取代了所有的   具有String类型的NSString类型。当您的Objective-C代码使用   Swift类,导入器替换所有的String类型   导入API中的NSString。

     

要启用字符串桥接,只需导入Foundation。

但在某些情况下,默认桥接不起作用,就像你无法检查字符串的长度

bridgeToObjectiveC()

对于这种情况,默认桥接将不起作用。

答案 1 :(得分:0)

假定是隐含的,但有很多地方不是。字符串,数组和字典缺少几个Obj-C对应的标量操作,例如String.length

答案 2 :(得分:0)

bridgeToObjectiveC()在Swift 2.2中不可用

而是使用:_bridgeToObjectiveC()

例如:

var temp: String = "hello"
print(temp._bridgeToObjectiveC().length)