课前@objc与swift课程上的@objc(class_name)之间的区别?

时间:2015-11-04 02:52:31

标签: swift class

之间的区别是什么:

@objc class MyClass: NSObject{}

@objc(MyClass)
class MyClass: NSObject{}

2 个答案:

答案 0 :(得分:3)

在Swift 2中不推荐使用@objc修饰符。所有标记为@objc的类都必须是NSObject的子类,从而使修饰符@objc成为冗余

但是,

@objc(xxx)用于定义类的替代名称(由运行时和Objective-C代码使用)。

此修饰符仅在您希望在运行时/目标C代码中使用其他名称时才有用。

默认情况下,运行时名称与声明的名称相同,以模块名称和点为前缀。例如,class X: NSObject {}在运行时将为@objc(MyModule.X)

答案 1 :(得分:0)

您可以将它放在单独的一行上。这完全取决于你。

如果使用@objc(SomeOtherName),它告诉编译器使用名称SomeOtherName而不是Swift类名(可能没有Objective-C等价物)从Objective-C代码访问类)。