黑马程序员技术交流社区

标题: OC 一个关于set的问题? [打印本页]

作者: Hi围城    时间: 2014-3-27 08:06
标题: OC 一个关于set的问题?
本帖最后由 Hi围城 于 2014-3-27 15:59 编辑
  1. - (void)test2
  2. {
  3.     NSString *str = NSStringFromSelector(_cmd); //请问此行为什么要这样写,为什么不能写成NSString *str = &_cmd?
  4.     NSLog(@"-----test2-----%@------", str);
  5.     //[self performSelector:_cmd];
  6. }
复制代码

作者: FlyTrem    时间: 2014-3-27 08:57
呵呵!
每个方法中都有SEL类型的_cmd方法,代表当前的方法
_cmd这个是方法而不是变量,&_cmd这个是不合理的
作者: conpgy    时间: 2014-3-27 09:59
_cmd在OC中表示当前方法的selector。selector是一种SEL类型。NSStringFromSelector函数返回一个selector的方法的名称。这里用一个字符串str来储存这个方法名。
而你说用NSString *str = &_cmd来代替这是什么意思??&_cmd取这个selector的地址?然后赋值给一个OC字符串??这里_cmd是一个selector,是一种SEL类型。好吧,虽然,OC中,SEL本质上是一个C字符串。如果你非要这么做,至少也不要前面的取地址符&。那岂不变成了一个char **类型赋给一个NSString *。这段代码的意义本来就是打印这个方法的名称。勉强这样写:NSString *str = _cmd; 也应该可以。但没有什么意义。
作者: Hi围城    时间: 2014-3-27 15:59
嗯,_cmd代表着当前方法的SEL。
谢谢你们!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2