Nói chung, bạn nên tạo các phương thức thể hiện khi bạn cần mã hoạt động trên một cá thể cụ thể của đối tượng. Bạn tạo một phương thức lớp khi bạn cần làm một cái gì đó liên quan đến lớp đó nói chung nhưng có lẽ không hoạt động trên bất kỳ đối tượng cụ thể nào của lớp đó.
Trong thực tế, bạn sẽ thấy rằng gần như tất cả các phương pháp của bạn phải là phương pháp thể hiện. Chỉ cần nhìn vào bất kỳ lớp Objective-C hiện tại nào như NSString
, NSArray
, UIView
, v.v. và bạn sẽ thấy rằng đại đa số các phương pháp của chúng là các phương pháp thể hiện. Cách sử dụng phổ biến nhất của các phương thức lớp (một lần nữa, hãy xem các lớp tôi đã đề cập) là để các hàm tạo thuận tiện trả về các đối tượng autorelease
hoặc các trình truy cập đơn lẻ.
Xem xét phương pháp length
trong NSString
. Tại sao đây là một phương thức thể hiện chứ không phải là một phương thức lớp? Nó là một phương thức thể hiện bởi vì nó chỉ có ý nghĩa khi yêu cầu một cá thể cụ thể của NSString
chiều dài của nó là bao nhiêu. Yêu cầu NSString
nói chung cho một chiều dài (tức là nếu chiều dài là một phương pháp lớp) sẽ không có ý nghĩa gì cả.
Mặt khác, giả sử rằng chúng tôi muốn thêm phương thức vào NSNumber
sẽ trả lại giá trị số nguyên tối đa có thể được lưu trữ trên một hệ thống nhất định. Trong trường hợp này, nó phải là phương thức lớp học vì chúng tôi chỉ hỏi một câu hỏi chung là NSNumber
độc lập với bất kỳ trường hợp cụ thể nào.
bản sao có thể có của [Objective-C: Class vs Instance Methods?] (Http://stackoverflow.com/questions/1053592/objective-c-class-vs-instance-methods) –