当使用objc运行时进行swift自省时,我注意到以下是可能的:

object_setClass(anObject, Birdy.classForCoder());

. …但不是
object_setClass(anObject, Birdy);

birdy.classforcoder()和birdy都是任何类的实例,为什么只有前者才会传播到objc运行时?

最佳答案

使用Birdy.self获取AnyClass元类型。
例子:

object_setClass(anObject, Birdy.self)

如果计划在obj-c中提供swift类,则应使用@objc注释对其进行标记:
@objc class Birdy
{
    func tweet()
    {
        println("Tweet tweet! #swift")
    }
}

09-07 11:18