有没有办法打印SEL动作?

mob*_*bob 15 objective-c selector ios

例如,我想跟踪发送到我的canPeformAction的动作,并且它们太多,无法在每次出现时在调试器中显示"悬停".因此,我想跟踪日志并在测试周期后检查它.

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
    NSLog(@"%s: sender=%@", __FUNCTION__, sender, action);
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*e.B 35

你要

NSLog(@"%s: sender=%@, selector=%s", __FUNCTION__, sender,sel_getName(action));
Run Code Online (Sandbox Code Playgroud)

  • `sel_getName()`返回一个C字符串,而不是`NSString`.使用`%s`表示格式或(更好)`NSStringFromSelector()`. (4认同)

pka*_*amb 7

使用NSStringFromSelector轻松获取Selector的可打印名称.

NSStringFromSelector(action)

NSString * NSStringFromSelector ( SEL aSelector );

返回给定选择器的字符串表示形式.

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
    NSLog(@"Action: %@", NSStringFromSelector(action));
}
Run Code Online (Sandbox Code Playgroud)