Ai có thể cho tôi biết khi nào nên sử dụng các hạng mục và khi nào thì nên sử dụng phân lớp con trong Objective-C? Ngoài ra xin vui lòng cho tôi biết những lợi thế và bất lợi của họ.Khi nào cần sử dụng loại và thời điểm sử dụng phân lớp?
Trả lời
Danh mục mục tiêu-c rất hữu ích nếu bạn muốn thay đổi hành vi của TẤT CẢ các cá thể của lớp, với mã tối thiểu. Phân lớp là hữu ích hơn nếu bạn muốn thay đổi hành vi của chỉ một số trường hợp nhất định và giữ nguyên phương thức gốc cho những người khác.
Danh mục có thể nguy hiểm, đặc biệt nếu bạn không thể xem nguồn gốc của phương pháp gốc, vì vậy bạn thường nên sử dụng các lớp con trên khung công tác của bên thứ ba và riêng tư chứ không phải một danh mục.
Cảm ơn bạn đã trả lời nhanh chóng ... –
@coneybeare, Chúng tôi có thể nói rằng Danh mục không thay đổi các objets khi phân lớp thay đổi đối tượng? xin vui lòng nói – Sandy
Tôi sẽ nói theo cách khác xung quanh. Một thể loại thay đổi các phương thức có sẵn trên một cá thể của một đối tượng, trong đó lớp con tạo ra một đối tượng mới của một kiểu khác. – coneybeare
Thêm vào những gì coneybeare đã nói. Subclassing là một lựa chọn tốt hơn cho việc tùy chỉnh, và Categories được sử dụng tốt hơn khi bạn chỉ muốn thêm một số chức năng cho các lớp hiện có.
Danh mục: Nó được sử dụng nếu chúng ta muốn thêm bất kỳ phương thức nào vào một lớp nhất định mà nguồn không được biết. Điều này về cơ bản được sử dụng khi chúng ta muốn thay đổi hành vi của bất kỳ lớp nào.
Ví dụ: Nếu chúng ta muốn thêm phương thức trên NSString để đảo ngược chuỗi, chúng tôi có thể tìm kiếm danh mục.
Phân lớp phụ: Nếu chúng ta muốn sửa đổi trạng thái cũng như hành vi của bất kỳ lớp nào hoặc ghi đè bất kỳ phương thức nào để thay đổi hành vi của lớp cha thì chúng ta sẽ đi phân lớp con.
Ví dụ: Chúng tôi phân lớp UIView để thay đổi trạng thái và hành vi trong mã iOS của chúng tôi.
Bạn có muốn thay đổi thứ gì đó xảy ra trong khuôn khổ của một đối tượng giao diện người dùng không? Sử dụng phân lớp. Override phương pháp tương ứng, chẳng hạn như init, drawRect, layoutSubviews, vv
Bạn có muốn một cái gì đó ứng dụng rộng rãi, một cái gì đó mà là ở
Ngoài các chức năng hiện có, và bạn không quan tâm nếu điều này
trở nên có sẵn cho tất cả các trường hợp của các trường hợp đã tồn tại từ trước của lớp khung công tác? Sử dụng danh mục. Ví dụ: Animate UILabel khi hành động của người dùng nhất định và áp dụng hoạt ảnh này thông qua ứng dụng của bạn cho tất cả các phiên bản UILabel.
Cảm ơn câu trả lời. Tôi có một nghi ngờ; xin vui lòng sửa tôi nếu tôi sai - mặc dù thể loại và lớp con có thể được sử dụng thay thế cho nhau nhưng những gì bạn đã đề cập ở trên là phương pháp hay nhất. Trong khi đưa ra tuyên bố này, tôi đã nghĩ về các ca sử dụng - ghi đè hành vi hiện có, thêm các hàm mới, thêm các biến để duy trì trạng thái hoặc bất kỳ thuộc tính nào khác. –
- 1. Thời điểm sử dụng == và thời điểm sử dụng?
- 2. Khi nào sử dụng thông tin loại thời gian chạy?
- 3. khi nào sử dụng Tác vụ và thời điểm sử dụng Chủ đề?
- 4. Thời điểm sử dụng "" (khoảng trắng) và thời điểm sử dụng. (dấu chấm) khi gọi các phương thức trong Scala?
- 5. Khi nào tôi cần sử dụng MPI_Barrier()?
- 6. Khi nào sử dụng dấu ngoặc và thời điểm sử dụng khoảng thời gian trong Mục tiêu-C
- 7. Khi nào cần sử dụng Eventstore
- 8. Khi nào cần sử dụng viewDidLoad và khi nào thì sử dụng awakeFromNib
- 9. Khi nào nên sử dụng các loại cơ bản (Số nguyên, Chuỗi) và khi nào cần viết một lớp mới?
- 10. Khi nào cần sử dụng giao diện và khi nào cần sử dụng các chức năng bậc cao hơn?
- 11. Khi nào cần sử dụng một mô-đun và khi nào nên sử dụng một lớp học
- 12. Thời điểm sử dụng sự kiện?
- 13. Khi nào cần sử dụng socket.io và khi nào thì sử dụng ajax
- 14. Khi nào sử dụng undef_method, và khi nào cần sử dụng remove_method?
- 15. Khi nào cần sử dụng Request.UrlReferrer và khi Request.ServerVariables ["HTTP_REFERER"]?
- 16. Sử dụng IComparer để phân loại
- 17. Làm thế nào để sử dụng một lớp chữ thường khi cần phân cấp?
- 18. SSL - Cách thức và thời điểm sử dụng nó
- 19. Khi nào nên sử dụng các lớp nào trong Qt Quick 2 và cách sử dụng?
- 20. Khi nào sử dụng <ref bean> và thời điểm sử dụng <ref local> vào mùa xuân?
- 21. Khi nào nên sử dụng linh kiện và thời điểm sử dụng các phần mở rộng trong Yii?
- 22. ICustomTypeDescriptor là gì và thời điểm sử dụng?
- 23. Khi nào sử dụng giao diện hoặc lớp trừu tượng? Khi nào sử dụng cả hai?
- 24. Khi nào chúng ta sử dụng mô-đun ruby và sử dụng thành phần lớp học?
- 25. Khi nào tôi cần sử dụng quaternions?
- 26. Ưu điểm và nhược điểm khi sử dụng lớp MultiSearcher của Lucene
- 27. Khi nào tôi cần sử dụng @WebServiceRef?
- 28. __declspec là gì và khi nào tôi cần sử dụng?
- 29. Điều gì và khi nào cần sử dụng Tuple?
- 30. Khi nào sử dụng diễn viên trong libgdx? Khuyết điểm và ưu điểm là gì?
thể trùng lặp của [Sự khác nhau giữa kế thừa và thể loại trong Objective-c] (http://stackoverflow.com/questions/522341/difference-between-inheritance-and-categories-in-objective-c) –
Những gì bạn đã tìm hiểu về họ cho đến nay? Bạn đang cố gắng làm gì với họ? Điều gì khiến bạn tin rằng chúng có liên quan dưới bất kỳ hình thức nào? –