2012-02-27 40 views
11

Chúng ta có thể dễ dàng kiểm tra xem đối tượng có phương thức bằng cách sử dụng respondsToSelector: không, nhưng cách chúng ta thực hiện nó cho các hàm tĩnh trong lớp?Kiểm tra xem lớp có phương thức tĩnh

Tôi muốn có một cái gì đó như thế này:

if ([cls classRespondsToSelector:@selector(staticMethodName)]) { 
    ... 
} 

Trả lời

42

Trong lớp Objective-C là đối tượng quá.

if ([[myClass class] respondsToSelector:@selector(classMethod)]) { 

} 

Cũng là một lưu ý nhỏ, đây KHÔNG PHẢI là phương pháp 'tĩnh'. Điều đó có nghĩa là một cái gì đó cụ thể mà không tồn tại trong Objective-C. Chúng là các phương thức lớp.

+2

Chụp! Đã xóa câu trả lời giống hệt của tôi. 28 giây! – jrturton

+2

+1 đặc biệt là cho sửa chữa về phương pháp "tĩnh" :-) – JeremyP

+0

tại sao OP lại muốn kiểm tra sự tồn tại của một phương thức lớp cho một thể hiện của lớp đó? để gọi một phương thức lớp, chúng cần chính đối tượng lớp, vì vậy nó sẽ có ý nghĩa hơn khi được cho đối tượng lớp – user102008

Các vấn đề liên quan