NSString *key = NSStringFromSelector(_cmd);
在Objective-C中,_cmd 是一个隐含的参数,代表当前方法的选择器(Selector)。而 NSStringFromSelector(_cmd) 是一个宏,用于将传入的选择器转换成对应的字符串(NSString类型)。
让我们来逐步解释这行代码:
_cmd:在Objective-C方法的实现中,_cmd 是一个特殊的局部变量,它表示当前方法的选择器。选择器是Objective-C运行时中的一种数据类型,用于在运行时唯一地标识一个方法。
NSStringFromSelector():这是一个宏,其功能是将传入的选择器转换成对应的NSString对象,也就是将选择器的名字转换为字符串形式。
NSString *key = NSStringFromSelector(_cmd);:这行代码将当前方法的选择器转换成NSString对象,并将其存储在名为 key 的NSString指针变量中。
通常,这种技术被用于实现一些基于方法名的动态行为,例如在运行时构建字典、关联对象或进行方法交换等。通过将方法名转换为字符串,我们可以在运行时以字符串形式使用方法名,从而实现动态的操作。