Trong quá trình develop của mình chắc hẳn các bạn đã từng gặp các warning khi sử dụng các methods cũ, cụ thể là method đó đã đổi tên hoặc không còn sử dụng được trên version nào đó.
Trong quá trình code nếu có mothod nào không sử dụng chắc các bạn comment hoặc xoá code luôn rồi. Thông thường chỉ có các Mothods của Apple hoặc các Framework, Library thì mới có các warning này. Nhưng làm thế nào để họ có thể đánh dấu methods nào dùng ở version nào? Bài này mình cùng tìm hiểu vấn đề này nhé.
Định nghĩa:
Deprecate là một cách thông báo đến người dùng method rằng method này không được sử dụng nữa, không còn hữu ích nữa
Một số nguyên nhân chính dẫn đến deprecate
- Đổi tên
- Có một sự thay thế tốt hơn
- Không còn sử dụng được (Đã lỗi thời)
Các cách để deprecate một method
Basic usage
Chúng ta có thể đánh dấu một method không còn sử dụng nữa bằng thuộc tính @available
Đây là hình thức đơn giản nhất để đánh dấu bất kì methods nào không còn sử dụng nữa
Parameter đầu tiên chỉ ra nền tảng mà method này hỗ trợ. Trong trường hợp này, mình sẽ sử dụng dấu hoa thị (*) để cho biết rằng tất cả các nền tảng đều được hỗ trợ.
Tập chung và parameter thứ 2, ở đây mình truyền vào là deprecated nghĩa là thông báo rằng method này không còn sử dụng được nữa.
Chúng ta sẽ nhận được một warning nếu cố gắng sử dụng nó:
Deprecated version
Bạn có thể chỉ định phiên bản đầu tiên của method không dùng nữa bằng cách chỉ định số phiên bản bên cạnh parameter deprecated.
Trong ví dụ này, mình đặt deprecated cho oldApi trên iOS 13. Lưu ý rằng chúng ta cần chỉ định nền tảng, trong trường hợp này là iOS. Cũng warning khi sử dụng, giống với việc không chỉ định version nhưng nội dung warning ở đây là chỉ rõ ra rằng method này bị deprecated ở version nào.
Deprecated message
Bạn có thể thêm message mô tả rõ hơn về deprecated, thông báo này sẽ hiển thị cùng với cảnh báo mặc định hoặc thông báo lỗi.
Dưới dây là một ví dụ khi chúng ta thêm message cho deprecated
Và đây là là warning khi chúng ta sử dụng cho method
Rename
Nếu mục đích deprecate của bạn là vì đổi tên thì Swift đã có parameter hỗ trợ cho việc này
Sử dụng rename là cách hay nhất để thông báo cho người dùng về tên mới
Xcode có 2 cách để hỗ trợ thông báo cho người dùng về rename
- Xcode sẽ generate một Fix button cho chúng ta. Khi click và button đó sẽ rename từ method cũ sang method mới.
- Xcode sẽ tạo một message về việc đổi tên ở trong warning message.
Đây là một ví dụ từ Apple, họ thay đổi index(of:) thành firstIndex(of:) trên Swift 5
Obsoleted
Nếu một method không thể sử dụng được nữa thì bạn nên sử dụng parameter Obsoleted
Khi sử dụng obsoleted thay vì nhận được warning thì chúng ta sẽ nhận được một error, error message này gồm message đã được thêm vào parameter và message mặc định
Đây là ví dụ khi bạn dùng obsoleted
Vì nhận được lỗi nên chắc chắn chương trình của chúng ta không thể chạy được rồi, các bạn phải bỏ đi hoặc sử dụng method khác để chạy chường trình.
Thông qua bài này mình đã giới thiệu đến các bạn cách để đánh dấu deprecated.
Mình hi vọng bài viết có thể giúp ích được cho các bạn. Chúc các bạn thành công!