使用最新的Xcode 9 Beta,我似乎完全无法访问Swift类的属性。更奇怪的是,我可以访问该类本身以实例化它或其他,但是完全无法访问它的属性。
因此,如果我有这个Swift类:
import UIKit class TestViewController: UIViewController { var foobar = true }
我尝试这样做:
TestViewController *testViewController = [[TestViewController alloc] init]; // success testViewController.foobar; // error
我到底在做什么错?Xcode 9的新项目。
在Swift 4中更改了将Swift代码暴露给Objective-C的规则。请尝试执行以下操作:
@objc var foobar = true
作为一种优化,@objc推断已在斯威夫特4.减少举例来说,财产的范围内NSObject派生类,如你TestViewController,会 不会 再想见@objc在默认情况下(因为它在斯威夫特3一样)。
@objc
NSObject
TestViewController
另外,您也可以使用以下方法将 所有 成员立即暴露给Objective-C @objcMembers:
@objcMembers
@objcMembers class TestViewController: UIViewController { ... }
相应的Swift Evolution提案中对该新设计进行了详细说明。