The rules for exposing Swift code to Objective-C have changed in Swift 4. Try this instead:
@objc var foobar = true
As an optimization, @objc inference have been reduced in Swift 4. For instance, a property within an NSObject-derived class, such as your TestViewController, will no longer infer @objc by default (as it did in Swift 3).
Alternatively, you could also expose all members to Objective-C at once using @objcMembers:
@objcMembers class TestViewController: UIViewController {
...
}
This new design is fully detailed in the corresponding Swift Evolution proposal.