Ios 是否真的需要bridgeToObjectiveC?
SwiftIos 是否真的需要bridgeToObjectiveC?,ios,swift,Ios,Swift,SwiftString到NSString之间的转换是否真的需要bridgeToObjectiveC()?bridgeToObjectiveC()的行为是什么?正如我在许多地方读到的,没有必要将swiftString转换为NSString是隐含的 这应该是含蓄的,但有很多地方不是这样的。字符串、数组和字典缺少一些Obj-C对应的标量操作,例如String.length 如果导入Foundation框架,则swiftString到NSString之间的类型转换是隐式的。如果使用import Foun
String
到NSString
之间的转换是否真的需要bridgeToObjectiveC()
?bridgeToObjectiveC()的行为是什么?正如我在许多地方读到的,没有必要将swiftString
转换为NSString
是隐含的 这应该是含蓄的,但有很多地方不是这样的。字符串、数组和字典缺少一些Obj-C对应的标量操作,例如String.length
如果导入Foundation
框架,则swiftString
到NSString
之间的类型转换是隐式的。如果使用import Foundation
则无需对字符串使用bridgeToObjectiveC()
Swift自动在字符串类型和NSString之间建立桥接
班级。这意味着您可以在任何地方使用NSString对象
改用Swift字符串类型,并获得两者的好处
键入字符串类型的插值和Swift设计的API以及
NSString类的广泛功能。因此,你应该
几乎不需要在自己的代码中直接使用NSString类。
事实上,当Swift导入Objective-CAPI时,它将替换所有
NSString类型与字符串类型。当您的Objective-C代码使用
Swift类,导入器将所有字符串类型替换为
导入的API中的NSString
启用字符串桥接,只需导入基础。
但在某些情况下,默认桥接将无法正常工作,就像您无法检查字符串的长度一样
var abcs = "somString"
abcs.length //will not work
abcs.bridgeToObjectiveC().length //you need call `bridgeToObjectiveC` explicitly
在这种情况下,默认桥接将不起作用。bridgeToObjectiveC()在Swift 2.2中不可用
改用:_bridgeToObjectiveC()
例如:
var temp: String = "hello"
print(temp._bridgeToObjectiveC().length)
在Swift中,最好使用countElements(abc)
或abc.utf16count
,因为它们不需要桥接。是的,它们不是NSString
函数。我想说明在某些情况下,我们需要显式定义bridgetoobjective
,因为隐式转换可能不起作用。代码和答案没有问题。只是想把它作为一个注释放在这里,这样如果初学者来到这里,他们就可以很容易地看到如何使用字符串。