OC 類型不匹配問題

在OC中,兩個不同類型的對象也是可以相互賦值的,比如NSString *s和NSNumber *n類型,可以寫成s=n;編譯器不會報錯,但是會提示警告,如果,b是通過NSDictionary或其他容器中獲取的,也就是不確定裏面的類型,這時候警告也沒有。就很容易犯錯了。

s=b,實際運行結果

賦值後,s的類型會變成b的類型,在這裏就是 NSNumber,運行到這裏也不會有什麼大的錯誤,但是,如果後面有用到s的地方,比如調用了NSString的一些特有的方法,但是NSNumber是沒有的,因爲s已經變成了b的類型,這時候會出現方法無法找到的crash,是crash,所以在不確定類型的時候務必要做類型判斷。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章