我知道這個問題已經被問了好幾次了,但是我的是略有不同的。在重複此操作之前,請仔細閱讀。 堆棧溢出中有很多帖子說:「就我個人而言,我討厭MACROS,不要使用那個狗屎」。我讀過所有這些,而且我的情況不同。我正在嘗試使用#define宏定義軟件(iOS應用)中使用的網址。#define或const string *
我同意使用const字符串比#define宏更好。但是,在一個越來越基於REST的API世界中,接受查詢參數作爲URL的一部分,你怎麼仍然可以使用const字符串來表示一個URL的變化?
而不是http://api.myblog.com/posts?entryid=%@ ,繼REST原則將有 http://api.blog.com/posts/entries/[entryid]
在前者類型的API服務器,URL是http://api.myblog.com/posts所有條目,他們不會改變。一個常量字符串是可能的。
在後一種類型中,URL隨每個條目而變化,我使用一個擴展爲像這樣的完整URL的宏。
#define GET_ENTRY_URL(__MY_ENTRY_ID__) [NSString stringWithFormat:@"http://api.myblog.com/posts/entries/%@", __MY_ENTRY_ID__];
我的方法有沒有任何設計缺陷? 想知道您的意見。
謝謝。
如何傳遞的靜態常量NSString的變量? – Mugunth
你知道你不能,因爲它是一個常數。如果API變得更復雜,我會像NSURL一樣構造類,可以在裏面完成網址構建。也許使用宏還不是至關重要,但是當這段代碼到達很多地方時,事情可能會再次出現錯誤。例如:將所有GET_ENTRY_URL(x)分成兩個GET_CODING_ENTRY_URL(x),GET_PERSONAL_ENTRY_URL(x)。 – alvinsj