"?"表示这个变量可能不存在,如果不存在,"?"所在语句后面的内容都不会执行
!是一个强制拆包,告诉编译器我绝对肯定代码能够执行,如: strValue!.hashValue,如果不能执行则报错。 ?是表示一个不确定,strValue?.hashValue 就等于OC的if(strValue){[strValue hashValue]; } 有就执行,有没后面代码就不执行。 不会报错。