2012-05-04 162 views
13

例如,我想跟踪发送到我的canPeformAction的操作,并且它们数量太多,无法在每次出现时在调试器中显示“悬停”。因此,我想跟踪日志并在我的测试周期后检查它。有没有办法打印SEL操作?

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender { 
    NSLog(@"%s: sender=%@", __FUNCTION__, sender, action); 
} 
+7

我发现我的答案:NSStringFromSelector(动作) – mobibob

回答

34

你想

NSLog(@"%s: sender=%@, selector=%s", __FUNCTION__, sender,sel_getName(action)); 
+4

'sel_getName()'返回一个C字符串,而不是一个'NSString'。使用'%s'作为格式或(更好)'NSStringFromSelector()'。 –

+0

谢谢生病编辑我asnwer –

+1

谢谢Jacques和戴夫 - 我问这个问题后,我发现宏NSStringFromSelector。 +1并接受你。 – mobibob

6

使用NSStringFromSelector轻松获得选择的可打印名称。

NSStringFromSelector(action)

NSString * NSStringFromSelector (SEL aSelector);

返回给定选择的字符串表示。

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender { 
    NSLog(@"Action: %@", NSStringFromSelector(action)); 
} 
相关问题