当使用objc运行时进行Swift内省时,我注意到以下内容是可能的:
object_setClass(anObject, Birdy.classForCoder());
。 。 。但不是
object_setClass(anObject, Birdy);
Birdy.classForCoder()和Birdy都是AnyClass的一个实例,为什么只有前者会传播到objc运行时?
答案 0 :(得分:4)
使用Birdy.self
获取AnyClass
元类型。
示例:
object_setClass(anObject, Birdy.self)
如果您计划在Obj-C中提供Swift类,则应使用@objc
注释标记它们:
@objc class Birdy
{
func tweet()
{
println("Tweet tweet! #swift")
}
}