我們判斷一個(gè)實(shí)例對(duì)象能否調(diào)用某個(gè)方法時(shí),通常會(huì)用respondsToSelector:方法來(lái)檢測(cè)。這個(gè)方法在NSObject協(xié)議中聲明,NSObject類中實(shí)現(xiàn)。
那如何判斷一個(gè)類是否能調(diào)用某個(gè)類方法呢?
實(shí)際上,如果了解Objective-C的類也是一個(gè)對(duì)象,即所謂的類對(duì)象的話,就知道我們同樣可以用respondsToSelector:方法來(lái)做這個(gè)判斷。
實(shí)例對(duì)象的類是類本身,而類對(duì)象的類是所謂的元類(Meta Class)。
例子:
實(shí)例對(duì)象
Test *test = [[Test alloc] init];
NSLog(@"%d",[test respondsToSelector:@selector(testInstanceMethod)]);-
類對(duì)象
NSLog(@"class mehtod %d",[Test respondsToSelector:@selector(testClassMethod)]);