as NSArray 和 as! NSArray 和 as NSArray! 有什么区别?

//加载xib view
class func loadViewFromNibNamed(_ nibName:String, owner: AnyObject?, options: [AnyHashable: Any]?) -> AnyObject{
        
    let nibs: NSArray = Bundle.main.loadNibNamed(nibName, owner: owner, options: options) as NSArray!
        
    return nibs.object(at: 0) as AnyObject
}

下面这句,as! NSArray就会报警告,as NSArray!就可以。请问各位大哥,具体两个表达方式有什么区别,另外还有as NSArray 呢?
let nibs: NSArray = Bundle.main.loadNibNamed(nibName, owner: owner, options: options) as NSArray!

查看回复