2012-12-12 39 views
2

所以這個代碼工作(發送方法名稱作爲一個字符串接收方法)選擇/方法的名稱作爲字符串參數

[self.Client sendDigitalJoinAndReleaseByName:[NSString stringWithFormat:@"%s",_cmd]]; 

但是由於iOS 6的(我認爲)我現在得到一個警告

格式指定型「的char *」,但參數的類型爲SEL

甚至是否有SEL格式說明? 這樣做的正確方法是什麼(所以沒有警告)?

+0

我注意到有一個運行時函數:'const char * sel_getName(SEL aSelector)'。我沒有用過它...... –

+2

爲什麼不傳遞'SEL'而不是格式化爲字符串? – trojanfoe

+0

什麼是_cmd?那函數參數的類型是什麼? –

回答

6

只需使用NSStringFromSelector(_cmd)和打印結果。

2

你可以使用NSStringFromSelector:

[self.Client sendDigitalJoinAndReleaseByName:NSStringFromSelector(_cmd)]; 
+1

請注意'__PRETTY_FUNCTION__'並沒有完全相同的事情:它返回*這個函數的名字(很好地格式化),而不是任何任意函數。 – bdesham

+0

@bdesham好主意指出這一點,我把它包括在內的唯一原因是基本上指出它的存在,但我用它的方式聽起來就像我在比較兩者。刪除。 –