作者:六九四四708 | 来源:互联网 | 2023-02-01 17:03
在Xcode 9 Beta中试用Swift 4.
出于某种原因,我在NSObject上使用键值访问器时遇到了崩溃.
有任何想法吗?
import Cocoa
class Person: NSObject {
var name = ""
var age = 0
}
let alpha = Person()
alpha.name = "Robert"
alpha.age = 53
alpha.value(forKey: "name")
// error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0).
Sulthan..
19
键值编码需要Objective-C.在Swift 4中,您必须明确标记可从Obj-C访问的成员:
@objcMembers
class Person: NSObject {
要么
class Person: NSObject {
@objc var name = ""
var age = 0
}
参见Swift Evolution 160
1> Sulthan..:
键值编码需要Objective-C.在Swift 4中,您必须明确标记可从Obj-C访问的成员:
@objcMembers
class Person: NSObject {
要么
class Person: NSObject {
@objc var name = ""
var age = 0
}
参见Swift Evolution 160
2> Code Differe..:
ObjC推理在Swift 4中受到限制.您可以使用objcMembers
编译器标记您的类以生成符合ObjC的访问器:
@objcMembers
class Person: NSObject {
var name = ""
var age = 0
}
或者通过在Build Settings 中将Swift 3 Objc Inference设置为On来恢复旧行为: