instancesRespondToSelector:類實(shí)例化后的對(duì)象是否綁定某方法
respondsToSelector:類或?qū)ο笫欠窠壎撤椒?br>
區(qū)別:
- 前者只能用于類,后者可用于類或?qū)ο螅?/li>
- 前者只適用于判斷
實(shí)例方法是否存在,后者適用于實(shí)例方法和類方法;
實(shí)例:
<pre>
@interface Test1 : NSObject
- (void)objectFun;
- (void)classFun;</pre>
<pre>
BOOL flag;
flag = [Test1 instancesRespondToSelector:@selector(objectFun)]; //YES
flag = [Test1 instancesRespondToSelector:@selector(classFun)]; //NO
flag = [Test1 respondsToSelector:@selector(objectFun)]; //NO
flag = [Test1 respondsToSelector:@selector(classFun)]; //YES
Test1 *obj = [[Test1 alloc] init];
flag = [obj respondsToSelector:@selector(objectFun)]; //YES
flag = [obj respondsToSelector:@selector(classFun)]; //NO</pre>
總結(jié):
instancesRespondToSelector只能寫(xiě)在類名后面,respondsToSelector可以寫(xiě)在類名和實(shí)例名后面。[類 instancesRespondToSelector]判斷的是該類的實(shí)例是否包含某方法,等效于:[該類的實(shí)例 respondsToSelector]。[類 respondsToSelector]用于判斷是否包含某個(gè)類方法。