1. 程式人生 > >IOS #ifdef 的那些事兒

IOS #ifdef 的那些事兒


格式有點亂,整了幾次都整隻是來,大家將就一下吧。

這篇文章是本人(本人是菜鳥)在第一次接觸上線專案時遇到的一個讓我記憶深刻的問題。

假設你是大神。那麼請繞過,這僅僅是非常膚淺的知識點,寫給自己也分享給大家。

相信大家對於以下的語句一定不陌生。

#ifdef (1)

(2)

#else

(3)

#endif

可是我在這裡還是略微解釋一下吧(顯得專業),假設在這個式子之前有#define(1)的話執行(2)否則執行(3)

 

假設僅僅是這一點的話那麼就對不起各位觀眾了。以下就要說我遇到的問題了,

我近期接觸的專案程式碼中有這樣幾句

#ifdef DEBUG

static NSString *const kFPBaseUrl =@"http://(1)";

#else

static NSString *const kFPBaseUrl =@"http://(2)";

#endif

 相信基本上每一個專案裡面都會有這幾句

 咋一看非常easy,沒錯,就是非常easy。就是一個測試server地址和生產server地址的切換。

 可是問題就出在#ifdef DEBUG上,因為要改成生產server測試。所以我就開始找#defineDEBUG

 可是我找遍了整個專案也沒有找到,當時我就納悶了。那要怎麼去切換?後來我得人指點明確了。

 原來這個#defineDEBUG能夠算是Xcode整合的,事實上當我們執行專案的時候能夠有選擇是執行 debug 或 release 版本號。

 怎樣選擇?例如以下圖 

 


 


 


    如上圖,假設選擇 debug 編譯的話算是系統自行建立了#defineDEBUG然後以下你就知道了。。。

對於這個問題可能在有經驗的人來說非常easy,可是對於我們沒有經驗的或者沒注意過的真還是有點幫助的。


在這裡我還要說一點的是,關於在專案中肯定會有測試的server和生產的server。請求時用得地址介面肯定也不一樣。

假設你不想麻煩在須要切換server是修改多個地方(並且easy出現錯誤),那麼我建議你就僅僅在這一個地方涉及請求介面

的更換和修改。

這樣做的優點就是改一個地方,全部的都會變。並且不easy出錯,你還有什麼理由不注意一下呢?


好了,今天就到這裡。有錯誤歡迎指正,交流 —— LC.莫流觴