Swift4 KVC给类属性赋值报错

class Person : NSObject {
    var name : String?
    var age : Int = 0
    
    override init() {
        super .init()
    }
    
    init(dict : [String : Any]) {
        super.init()
        setValuesForKeys(dict)
    }
}

let p2 = Person(dict: ["name": "jakie", "age" : 61])
print(p2.name ?? "NoOne")
print(p2.age)

在使用kvc给类属性赋值时报了下面的错

error: Execution was interrupted, reason: signal SIGABRT. The process has been left at the point where it was interrupted, use "thread return -x" to return to the state before expression evaluation.

解决这个错需要在属性前面加上@objc,如下

class Person : NSObject {
    @objc var name : String?
    @objc var age : Int = 0
    ...
}