小编典典

无法从Objective-C访问Swift 4类:“在类型的对象上找不到属性”

swift

使用最新的Xcode 9 Beta,我似乎完全无法访问Swift类的属性。更奇怪的是,我可以访问该类本身以实例化它或其他,但是完全无法访问它的属性。

因此,如果我有这个Swift类:

import UIKit

class TestViewController: UIViewController {
    var foobar = true
}

我尝试这样做:

TestViewController *testViewController = [[TestViewController alloc] init]; // success
testViewController.foobar; // error

我到底在做什么错?Xcode 9的新项目。


阅读 377

收藏
2020-07-07

共1个答案

小编典典

在Swift 4中更改了将Swift代码暴露给Objective-C的规则。请尝试执行以下操作:

@objc var foobar = true

作为一种优化,@objc推断已在斯威夫特4.减少举例来说,财产的范围内NSObject派生类,如你TestViewController,会
不会 再想见@objc在默认情况下(因为它在斯威夫特3一样)。

另外,您也可以使用以下方法将 所有 成员立即暴露给Objective-C @objcMembers

@objcMembers class TestViewController: UIViewController {
    ...
}

相应的Swift Evolution提案对该新设计进行了详细说明。

2020-07-07