swift : Why is the class method struck out

标签 swift objective-c-runtime

只要 Swift 类从 NSObject 扩展,我们就可以将它传递给 Objective-C 运行时并要求它为我们自省(introspection)。

我们有三种选择:

  • classForCoder
  • classForKeyedArchiver

. .然而,类(Class)被淘汰了。 (见图)。为什么是这样?

enter image description here

最佳答案

因为 class 是 Swift 中的关键字,因此任何有效的方法都不能命名为 class。同样,您不能创建名为 forwhile 或其他关键字的方法。

我无法用我的方法重现删除线,但是,在 obj-c 中命名方法 var(或其他关键字)使得它无法从 Swift 调用。

编辑

我错了。仍然可以使用

从 Swift 调用 class
var clazz: AnyClass? = self.`class`()

但是,编译器会说:

'Class' is unavailable: use 'dynamicType' instead

所以 Edwin Vermeers 的答案是正确的。

关于 swift : Why is the class method struck out,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24059504/

相关文章:

ios - 如何在 Swift 中将多个图像上传到单个推文中?

ios - LAContext 每次都会弹出

objective-c - 动态添加方法

objective-c - 如何在运行时向对象添加属性?

ios - +[NSObject initialize] 内部的 dispatch_once 是否矫枉过正?

Swift:泛型类中的声明

ios - UISwipeGestureRecognizer 额外参数 'target' 调用存档项目但不调用构建项目

ios - VNFaceObservation BoundingBox 在纵向模式下不缩放

objective-c - 为什么 objc_super.receiver 在 ARC 中不可用?

ios - 如何在不快速继承 NSObject 的情况下覆盖 NSObject 方法