所以這個代碼工作(發送方法名稱作爲一個字符串接收方法)選擇/方法的名稱作爲字符串參數
[self.Client sendDigitalJoinAndReleaseByName:[NSString stringWithFormat:@"%s",_cmd]];
但是由於iOS 6的(我認爲)我現在得到一個警告
格式指定型「的char *」,但參數的類型爲SEL
甚至是否有SEL格式說明? 這樣做的正確方法是什麼(所以沒有警告)?
所以這個代碼工作(發送方法名稱作爲一個字符串接收方法)選擇/方法的名稱作爲字符串參數
[self.Client sendDigitalJoinAndReleaseByName:[NSString stringWithFormat:@"%s",_cmd]];
但是由於iOS 6的(我認爲)我現在得到一個警告
格式指定型「的char *」,但參數的類型爲SEL
甚至是否有SEL格式說明? 這樣做的正確方法是什麼(所以沒有警告)?
只需使用NSStringFromSelector(_cmd)
和打印結果。
你可以使用NSStringFromSelector:
[self.Client sendDigitalJoinAndReleaseByName:NSStringFromSelector(_cmd)];
請注意'__PRETTY_FUNCTION__'並沒有完全相同的事情:它返回*這個函數的名字(很好地格式化),而不是任何任意函數。 – bdesham
@bdesham好主意指出這一點,我把它包括在內的唯一原因是基本上指出它的存在,但我用它的方式聽起來就像我在比較兩者。刪除。 –
我注意到有一個運行時函數:'const char * sel_getName(SEL aSelector)'。我沒有用過它...... –
爲什麼不傳遞'SEL'而不是格式化爲字符串? – trojanfoe
什麼是_cmd?那函數參數的類型是什麼? –