title: Swift cannot access ObjC interface property defined as id<Protocol>
body: <p>I have an ObjC interface that defines property <code>controller</code> like this:</p>
  
  <pre><code>@protocol STXFeedPhotoCellDelegate;
  @protocol STXLikesCellDelegate;
  @protocol STXCaptionCellDelegate;
  @protocol STXCommentCellDelegate;
  @protocol STXUserActionDelegate;
  
  @interface STXFeedTableViewDelegate : NSObject &lt;UITableViewDelegate&gt;
  
  @property (nonatomic) BOOL insertingRow;
  @property (weak, nonatomic) id &lt;STXFeedPhotoCellDelegate, STXLikesCellDelegate, STXCaptionCellDelegate, STXCommentCellDelegate, STXUserActionDelegate&gt; controller;
  @property (nonatomic) NSArray *comments;
  
  - (instancetype)initWithController:(id&lt;STXFeedPhotoCellDelegate, STXLikesCellDelegate, STXCaptionCellDelegate, STXCommentCellDelegate, STXUserActionDelegate&gt;)controller;
  
  - (void)reloadAtIndexPath:(NSIndexPath *)indexPath forTableView:(UITableView *)tableView;
  - (CGFloat)calculateHeightForCell:(UITableViewCell *)cell;
  - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
  
  @end
  </code></pre>
  
  <p>I have added this header file to the bridging header.</p>
  
  <p>I then define a subclass in Swift that subclasses <code>STXFeedTableViewDelegate</code>. However, this Swift class cannot access the <code>super.controller</code> property. It can, however, access any of the other properties of the superclass <code>STXFeedTableViewDelegate</code>. I suspect the reason behind that is because the <code>controller</code> property is defined as <code>id&lt;Protocol&gt;</code>.</p>
  
  <p>I'd be thankful is someone can provide a way to make Swift recognise this property from ObjC class.</p>
  
  <p><strong>Update</strong>: with Swift code:</p>
  
  <pre><code>class PostTableViewDelegate: STXFeedTableViewDelegate {
  
      override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -&gt; CGFloat {
          let controller = self.controller
          let controller2 = super.controller
          //more class code below
  </code></pre>
  
  <p><code>let controller = self.controller</code> fails with <code>PostTableViewDelegate does not have a member called controller</code></p>
  
  <p><code>let controller2 = super.controller</code> fails with <code>STXFeedTableViewDelegate does not have a member called controller</code></p>