在我刚刚阅读的博客文章中:
' Swift允许我们从NSObject扩展类以获得对象的Objective-C运行时特性。它还允许我们使用@objc注释Swift方法,以允许Objective-C运行时使用这些方法。'
我不理解术语Objective-C运行时功能。是否意味着代码也可以在Objective-C项目中使用?
答案 0 :(得分:2)
Objective-C运行时是一个运行时库,它提供对Objective-C语言的动态属性的支持,因此被所有Objective-C应用程序链接。 Objective-C运行时库支持函数在/usr/lib/libobjc.A.dylib中的共享库中实现。
该API主要用于开发Objective-C与其他语言之间的桥接层,或用于低级调试。你很可能不需要使用它。
即使在没有单行Objective-C代码的情况下编写,每个Swift应用程序都在Objective-C运行时内执行,这就是您可以访问它的原因。
您可以执行swizzling
之类的操作答案 1 :(得分:0)
Objective-C 运行时
Swift
可以使用 Objective-C Runtime
库。
C + extra layer + Objective-C Runtime = Objective-C
它使用类似的 API,并针对 iOS 或 MacOS 等不同平台使用不同的实现。
它包含:
使用 [@objc vs dynamic
] 公开 Swift 的 Objective-C API 并为 Swift 代码添加动态行为。当您需要通常的快速方法无法做到的事情时,它很有用。很好的例子是 KVO、swizzling...