---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
在OC中,selector在源代码中被用来指向一个对象的,selector代表这个方法的名称。selectors类型为SEL,所有名称相同的方法都有同样的selector。应该使用@selector()指令将方法名传递给编译的selector,而不是直接使用一个方法的全名。如下:
SEL sel = @selector(foo:);
当你需要将某个字符串转换为selector时,可以使用NSSelectorFromString(aBuffer),如:
SEL sel = NSSelectorFromString(@"foo:");
也可以使用NSStringFromSelector(sel)进行反向转换:
NSString *method = NSStringFromSelector(sel);
具有相同名称的类方法和实例方法也被分配了相同的selector,单因为他们属于不同的领域,这两者之间也不会产生混淆。
_cmd
_cmd是一个隐藏的参数,代表当前方法的selector,他和self一样是每个方法调用时都会传入的参数。如:
void print(void)
{
NSLog(@"%@", NSStringFromSelector(_cmd));
}
会打印方法名print。
注意:_cmd只能在OC方法中使用,不能在C函数中使用。如不能在main函数中使用。
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------