Ios 在swift中使用bridgeToObjectiveC()
bridgeToObjectiveC()在swift中将做什么。它似乎将Ios 在swift中使用bridgeToObjectiveC(),ios,swift,Ios,Swift,bridgeToObjectiveC()在swift中将做什么。它似乎将Swift对象转换为ObjectiveC对象。这和类型转换相同吗 例如,我可以将swiftString转换为NSString等 var swingString:String = "test string" var correspondingNSString = swingString.bridgeToObjectiveC() // Using bridge var correspondingNSString = swin
Swift
对象转换为ObjectiveC
对象。这和类型转换相同吗
例如,我可以将swiftString
转换为NSString
等
var swingString:String = "test string"
var correspondingNSString = swingString.bridgeToObjectiveC() // Using bridge
var correspondingNSString = swingString as NSString // type casting
我想知道两者是否相同?我的理解是提供了
bridgeToObjectiveC()
,这样您就不必知道相应的objective-c类型是什么;编译器决定适当的类型
例如:如果您有一个任意
对象的数组,您可以使用map
对每个对象调用bridgeToObjectiveC()
,而不必担心是否有String、Int和Double值
使用
as
关键字可以显式选择要将值转换为哪种类型。以上内容与String和NSString相同,都是免费桥接。我不清楚使用术语“免费桥接”w/r/t swift是否合适。这在CoreFoundation和Objective-C中有一个非常具体的含义。swift桥接机制在我看来明显不同。@ipmcc swift书似乎特意不使用这个术语,如果合适的话(例如。“Swift的String
类型无缝连接到基金会的NSString
类”,在第79页的框中)所以我认为你的分析是正确的。我想这座桥有一个代价,即使它的使用是无缝的,而“无缝桥接”可能是一个新的合适的术语。我不认为他们回避这个术语是因为必然存在一些未知的“代价”。我认为他们回避这个术语是因为“免费桥接”“是指CoreFoundation和Objective-C之间的一种非常特殊的交互机制,swift的机制看起来根本不同。实际上,我在使用类型转换与bridgeToObjectiveC()函数来回转换NSArray和NSDictionary时有不同的行为。我建议(目前)使用bridgeToObjectiveC()来显式地来回桥接obj c和swift对象。