var optionalsValue1 : Int?Cả 2 cách trên bạn đều đã tạo một optionals value, tuy nhiên 2 cách khai báo này có sự khác nhau. Để hiểu hơn mình cho bạn 1 ví dụ:
var optionalsValue2 : Int!
var optionalValue1 : Int? = nil
print(optionalsValue1)
//"nil\n"
var optionalValue1 : Int! = nil
print(optionalsValue1)
//fatal error: unexpectedly found nil while unwrapping an Optional value
Trong trường hợp 1, chương trình vẫn chạy, in ra kết quả trong màn hình là "nil\n", còn trường hợp thứ 2 trình biên dịch sẽ báo lỗi.
Giải thích: Khi ta khai báo "?" tức là ta thông báo rằng tôi không chắc chắn rằng khi biến đó được sử dụng thì biến đó đã có dữ liệu hay không. Còn khi bạn khai báo "!" thì bạn đã thông báo rằng bạn chắc chắn rằng khi biến đó được sử dụng biến đó có dữ liệu, nếu lúc biến đó được sử dụng mà dữ liệu trong biến đó là nil thì hoặc là trình biên dịch sẽ báo lỗi, hoặc là khi chạy app của bạn sẽ bị crash khi tác vụ xử lý tới biến đó.
Không có nhận xét nào:
Đăng nhận xét