         // TODO: 真的是在且仅在下一次 `layoutSubviews` 生效吗？那为什么上一个 tableView 动态高度为什么是可以的呢？
         // TODO: 当初 hasSet 属性不就是为了做这件事情吗？
         // TODO: 能不能让开发者想的更少呢？
+        
+        //  或者你也可以使用 _FYDComplexTableViewCell 中的代码来设定约束
+        
         deleteButton.fy_width(item.isMine ? 100 : 0)
         nickNameLabel.fy_right(deleteButton.chainLeft)
     }

            .fy_top(5)
            .fy_left(5)
            .fy_height(25)
//            .fy_right(deleteButton.chainLeft)
        
        deleteButton
            .fy_right(5)
            .fy_top(5)
            .fy_height(25)
//            .fy_width(50)
    }
    
    required init?(coder aDecoder: NSCoder) {

    }

}

class _FYDComplexTableViewCell: UITableViewCell {
    
    let avatarImageView = UIImageView()
    let nickNameLabel   = UILabel()
    let messageTextView = UITextView()
    let commentsList    = UITableView(frame: CGRectZero, style: .Plain)
    let deleteButton    = UIButton()
    let likeButton      = UIButton()
    var imageCollectionView : UICollectionView!
    
    func setWith(item:Item) {
        deleteButton.hidden(!item.isMine)
        nickNameLabel.fy_right(deleteButton.hidden ? 5 : deleteButton.chainLeft)
    }
    
    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        
        nickNameLabel.superView(self).backgroundColor(Red.alpha(0.3))
        deleteButton.superView(self).backgroundColor(Green.alpha(0.3))
        
        nickNameLabel
            .fy_top(5)
            .fy_left(5)
            .fy_height(25)
        
        deleteButton
            .fy_right(5)
            .fy_top(5)
            .fy_height(25)
            .fy_width(50)
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
}
