Những thủ thuật cần biết trong lập trình Swift (P2)

Share:

Sử dụng phương thức Swizzling trong Swift

Phương thức Swizzling là một kỹ thuật thay thế cho một phương pháp thực hiện khác. Nếu bạn không biết về Swizzling, hãy tham khảo bài post này. Swift tối ưu hóa các đoạn code để gọi trức tiếp những địa chỉ từ bộ nhớ thay vì tìm kiếm những vị trí của phương thức tại thời điểm “runtime” như trong Objective-C. Do đó, mặc định thì Swizzling không hoạt động trong các lớp của Swift nếu chúng ta không:

  • Vô hiệu hóa việc tối ưu hóa của nó với một từ khóa động: đây là một sự lựa chọn được ưa thích nhất, và sự lựa chọn này cũng sẽ đem lại kết quả tốt nhất nếu như codebase hoàn toàn là ngôn ngữ Swift
  • Mở rộng NSObject.Đừng bao giờ làm việc này cho mỗi phương thức Swizzling (thay vì sử dụng từ khóa động). Bạn nên biết rằng phương thức Swizzling sẽ hoạt động trong những lớp có cơ sở là NSObject mà đã tồn tại từ trước, tuy nhiên tốt nhất là chúng ta vẫn nên lựa chọn phương thức này ở trạng thái động (dynamic)
  • Sử dụng các chú thích @objc trong phương thức sử dụng Swizzle: Điều này khá là hợp lý nếu phương pháp mà chúng ta muốn. Swizzle cũng cần được tiếp xúc với code của Objective-C cùng lúc.

Sau đây là ví dụ về Swizzling trong Swift. Nó vẫn yêu cầu phải có Objective-C runtime, tuy nhiên các lớp của chúng takhông hề thừa kế từ NSObject và phương thức của chúng ta không được đánh dấu như là một @objc

 

Share:

Leave a reply