     /// 核心布局方法
     func layout(views: [UIView]) {
         
+        assert(NSThread.isMainThread(), "This method should invoke in mainQueue!")
+        
         guard hasUnsetConstraintsOf(views) else {
             views.forEach { view in
                 view.layoutWithFangYuan()

    /// 确定了该 UIView.frame 后，装载 Constraint 至 to.ruler.section 中
    // TODO: 参数可变性还是一个问题！
    func setConstraintsFrom(view: UIView) {
        _fy_layoutQueue {
            self.constraints.forEach { constraint in
                if constraint.from == view {
                    let _from = constraint.from
                    let _to = constraint.to
                    let _value = constraint.value
                    switch constraint.direction {
                    case .BottomTop:
                        _to.rulerY.a = _from.frame.origin.y + _from.frame.height + _value
                    case .TopBottom:
                        _to.rulerY.c = _from.superview!.frame.height - _from.frame.origin.y + _value
                    case .RightLeft:
                        _to.rulerX.a = _from.frame.origin.x + _from.frame.width + _value
                    case .LeftRigt:
                        _to.rulerX.c = _from.superview!.frame.width - _from.frame.origin.x + _value
                    }
                    self.constraints.remove(constraint)
                    self.setSettedConstraint(constraint)
                }
            }
        }
    }

        
        _constraint.to = to
        _constraint.value = value
        assert(singleton.noConstraintCirculationWith(_constraint), "\n⚠️FangYuan: There is a constraint circulation between\n\(to)\n🔄\n\(_constraint.from)\n")
        singleton.constraints.insert(_constraint)
        singleton.holder.clearConstraintAt(direction)
    }
