2009-08-15 32 views
10

Belirli bir Sınıf için sınıf yöntemlerinin listesini nasıl alabilirim? <objc/runtime.h> içinde bildirilen class_copyMethodList işlevini kullanarak denedim, ancak bu yalnızca örnek yöntemleri veriyor. Ayrıca, bana bir yöntem için bir yöntem veren bir işlev buldum, ancak yalnızca önce yönteme sahip olan seçiciye sahip olursam (class_getClassMethod).Rasgele bir sınıf için sınıf yöntemleri listesi elde edin

Herhangi bir fikrin var mı?

sayesinde

Dave

cevap

11

class_copyMethodList geçti sınıfının örnek yöntemleri döndürür. Sınıf yöntemleri, aslında sınıfın meta sınıfının örnek yöntemleridir.

Sorununuza yönelik çözüm, class_copyMethodList için API Documentation numaralı telefona dahil edilmiştir.

+0

Kusursuz, teşekkürler! Bunu özlediğime inanamıyorum. = P –

19

Meta sınıfı kullanın.

#import <objc/runtime.h> 

int unsigned numMethods; 
Method *methods = class_copyMethodList(objc_getMetaClass("NSArray"), &numMethods); 
for (int i = 0; i < numMethods; i++) { 
    NSLog(@"%@", NSStringFromSelector(method_getName(methods[i]))); 
} 
free(methods); 
+3

Bu bir "kopyalama" yöntemi olduğundan, işiniz bittiğinde "ücretsiz (yöntemler)" seçeneğini unutmayın. ARC - C tahsisleri kullanmanız gerekip gerekmediğine bakılmaksızın, otomatik referans sayımı bu şekilde size yardımcı olmayacaktır. – Tommy

+1

Belge, içe aktarma yolunda biraz bulanık görünüyor, kullandım: #import prewett

İlgili konular