帶類別的約定是在擴展Apple類時包含前綴。例如:用魔術詞爲類別添加前綴的約定是什麼?
[string XXDataUsingUTF8];
(是的,這是一個愚蠢的例子只是去用它。)
什麼我就不太清楚的是慣例是什麼時,該標識符與copy
開始,set
,init
或new
。
例如:
[request setHTTPBodyWithKeyValues: keyValues];
如果添加我的前綴,這不再遵循「制定者開始設置」約定。
[request XXSetHTTPBodyWithKeyValues: keyValues];
在另一方面,如果我的設置後添加前綴,它不再是一個真正的前綴:
[request setXXHTTPBodyWithKeyValues: keyValues];
這不是非常有set
進口,但我覺得它變得更重要的有init
,copy
等
蘋果有沒有在任何地方記錄這個?什麼是常用的?
我從來沒見過這個任何官方指引,但在不混淆ARC或LLVM靜態分析儀,或任何其他的利益工具或人類閱讀你的代碼,我會選擇保持傳統的前綴在選擇器的開始。就個人而言,我在類別擴展方法名稱中使用下劃線,因爲「真實」方法永遠不會包含一個,因此保留了「前綴」的唯一性。在你的例子中,將會是'setXX_HTTPBodyWithKeyValues:'。在非基於約定的擴展方法中,它只是成爲'XX_myMethodName'。 – pmdj 2012-03-03 17:55:41
我想這真的是唯一的*實用*答案,不是嗎?感謝您指出明顯。 :) – 2012-03-03 18:40:28
非常有趣的一點!有些人喜歡後綴他們的「名字空間」字符串:'setHTTPBodyWithKeyValues_XX:'這不是更漂亮。 – 2012-03-03 18:52:37