Làm cách nào để tìm ra, khi chạy, nếu một lớp ghi đè lên một phương thức của siêu lớp của nó? Ví dụ, tôi muốn tìm hiểu xem một lớp học có thực hiện riêng của nó là isEqual:
hoặc hash
, thay vì dựa vào một lớp học siêu đẳng cấp.Tìm hiểu xem một lớp Objective-C có ghi đè lên phương thức
7
A
Trả lời
4
Bạn chỉ cần để có được một danh sách các phương pháp, và tìm kiếm một trong những bạn muốn:
#import <objc/runtime.h>
BOOL hasMethod(Class cls, SEL sel) {
unsigned int methodCount;
Method *methods = class_copyMethodList(cls, &methodCount);
BOOL result = NO;
for (unsigned int i = 0; i < methodCount; ++i) {
if (method_getName(methods[i]) == sel) {
result = YES;
break;
}
}
free(methods);
return result;
}
class_copyMethodList
chỉ trả về các phương pháp được định nghĩa trực tiếp trên lớp trong câu hỏi, không superclasses, do đó nên ý bạn là gì
Nếu bạn cần phương pháp lớp học, hãy sử dụng class_copyMethodList(object_getClass(cls), &count)
.
+0
Tuyệt vời, cảm ơn bạn rất nhiều! – cfischer
Các vấn đề liên quan
- 1. Khó hiểu "ghi đè lên một phương pháp riêng"
- 2. Tìm phương pháp ghi đè
- 3. ghi đè một phương thức sử dụng một lớp học
- 4. Có thể ghi đè lên một phương thức tĩnh trong lớp dẫn xuất không?
- 5. Phân lớp C mục tiêu ghi đè lên một phương thức trong siêu lớp
- 6. Ghi đè phương thức ghi đè (C#)
- 7. Cách ghi đè phương thức lớp học
- 8. ghi đè lên một phương thức cho một thể hiện của một lớp?
- 9. Gọi phương thức ghi đè, siêu lớp cuộc gọi đã ghi đè phương thức
- 10. Tại sao tôi nhận được "phải ghi đè lên một phương thức siêu lớp" với @Override?
- 11. Siêu lớp có không gọi phương thức ghi đè không?
- 12. Có cách nào trong C# để ghi đè lên một phương thức lớp với một phương pháp mở rộng?
- 13. Bắt buộc một lớp học ghi đè phương thức .equals
- 14. Tôi có thể ghi đè lên @RequestMapping trên một kiểu cho một phương thức không?
- 15. Trong Gobject, cách ghi đè lên phương thức của lớp cha thuộc về một giao diện?
- 16. Tìm hiểu xem phương thức có tồn tại trong một lớp tĩnh
- 17. Làm thế nào để ghi đè lên một phương thức lớp cha trong React?
- 18. Groovy có thể tự động thêm hoặc ghi đè lên một phương thức trên POJO không?
- 19. Ghi đè phương thức ở cấp độ
- 20. Nếu lớp dẫn xuất không ghi đè lên phương thức, phiên bản nào sẽ được gọi?
- 21. Có một lối tắt để ghi đè lên các phương thức trong một lớp Khung Android trong Eclipse không?
- 22. Ghi đè so với phương thức ẩn
- 23. Java: Làm cách nào để tìm ra phương thức được ghi đè từ lớp cơ sở?
- 24. phím tắt nhật thực để tìm tất cả lớp học trẻ em ghi đè phương thức
- 25. Ghi đè phương thức chồng chéo
- 26. Ghi đè đăng ký ghi đè Tạo Phương thức
- 27. Python Thừa kế từ một lớp nhưng phương thức ghi đè gọi một lớp khác?
- 28. có thể đánh dấu phương thức ghi đè là
- 29. Tìm hiểu phương thức __getitem__
- 30. C# Ghi đè phương thức GetHashCode
Vui lòng làm rõ. Bạn đang nói về việc tìm kiếm một cái gì đó trong tài liệu? Một số loại kiểm tra thời gian chạy? Gì? – rmaddy
@rmaddy Ông rõ ràng đang hỏi về việc kiểm tra xem một phân lớp có chứa tùy chỉnh thực hiện một phương thức được khai báo trong siêu lớp của nó hay không. Và câu hỏi cũng chứa thẻ runtime-c. –
@DominikHadl Vâng, đó là chính xác những gì tôi muốn. Tôi muốn làm điều này trong thời gian chạy. Giả sử tôi không có tài liệu cho lớp nói trên. – cfischer