Swift Eigenschaft, die einem Protokoll und einer Klasse entspricht

@property (strong, nonatomic) UIViewController<UITableViewDelegate> *thing;

Ich möchte eine Eigenschaft wie in diesem Objective-C-Code in Swift implementieren. Also hier ist was ich ausprobiert habe:

class AClass<T: UIViewController where T: UITableViewDelegate>: UIViewController {
    var thing: T!
}

Dies kompiliert. Mein Problem tritt auf, wenn ich Eigenschaften aus dem Storyboard hinzufüge. Das@IBOutlet tag erzeugt einen Compilerfehler.

class AClass<T: UIViewController where T: UITableViewDelegate>: UIViewController {
    @IBOutlet weak var anotherThing: UILabel!  // error
    var thing: T!
}

Der Fehler

Variable in a generic class cannot be represented in Objective-C

Ich implementiere dieses Recht? Was kann ich tun, um diesen Fehler zu beheben oder zu umgehen?

BEARBEITEN

Swift 4 hat endlich eine Lösung für dieses Problem. Siehe meine aktualisierte Antwort.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage