Wiem, że to pytanie zostało zadane kilka razy, ale moje jest nieco inne. Zanim zamkniesz ten plik jako duplikat, przeczytaj go w całości. Istnieje wiele wpisów na przepełnieniu stosu, które mówi: "Osobiście nienawidzę MAKRO, Nie używaj tego gówna". Czytałem te wszystkie, a mój przypadek jest inny. Próbuję zdefiniować adresy URL używane w oprogramowaniu (aplikacja na iOS) za pomocą makr #define.#define lub const string *
Zgadzam się, że używanie ciągów stałych jest lepszą praktyką niż makra #define. Jednak w świecie API opartym na REST, który akceptuje parametry zapytania jako część adresu URL, w jaki sposób można nadal używać ciągów stałych do reprezentowania zmieniającego się adresu URL?
Zamiast http://api.myblog.com/posts?entryid=%@ Server API REST, że następujące zasady miałyby http://api.blog.com/posts/entries/[entryid]
W pierwszym rodzaju, adres URL jest http://api.myblog.com/posts dla wszystkich pozycji i nie zmieniają. Ciąg stały był możliwy.
W drugim typie adres URL zmienia się wraz z każdym wpisem i używam makra, które rozwija się do pełnego adresu URL w ten sposób.
#define GET_ENTRY_URL(__MY_ENTRY_ID__) [NSString stringWithFormat:@"http://api.myblog.com/posts/entries/%@", __MY_ENTRY_ID__];
Czy są jakieś błędy konstrukcyjne w mojej metodzie? Chciałbyś poznać swoje dane wejściowe.
Dzięki.
Jak przekazać zmienne statyczne nsstrings const? – Mugunth
wiesz, że nie możesz, ponieważ jest stała. imho, jeśli api będzie bardziej skomplikowany, skonstruuję klasę jak NSURL, budowa URL-a może być wykonana wewnątrz. być może nie jest to jeszcze ważne, aby użyć makr lub nie, ale kiedy ten fragment kodu dotrze do wielu miejsc, wszystko może znowu być nie tak. np .: podziel wszystkie GET_ENTRY_URL (x) na dwa GET_CODING_ENTRY_URL (x), GET_PERSONAL_ENTRY_URL (x). – alvinsj