其實這個問題大家都知道,但是一般都是清楚一些皮毛的東西,只能進行一些簡單的應用。在這里詳細說一下模式切換的使用。
Xcode給我們自帶了兩種編譯模式Release 和 Debug,通常情況下我們可以利用這兩種模式做很多事情,比如debug下打印輸出日志release 下不打印,這是我們通常的操作:
一般Apple已經為我們設置好了 DEBUG 的宏定義,你可以在setting里查看:
我們可以直接使用比如:
#ifdef DEBUG //do sth. #else //do sth. #endif
或者:
#if DEBUG //do sth. #else //do sth. #endif
這兩種操作會呈現出相同的結果,因為DEBUG這個宏定義被定義並且為1,這里說一下#if和#ifdef。#if會去判斷條件是否成立,er#ifdef只會去判斷這個宏定義是否被定義,如果被定義不管值是什么都會繼續向下執行
當然我們也可以在代碼中定義一些變量,通過在不同環境下切換變量值來切換,比如:
static let isRelease = true static let serverURL = isRelease ? "prd url" : "dev url"
這樣我們可以通過修改isRelease的值來執行不同的serverURL !
這種方式在我們的代碼中用的比較多,我們目前用的Objective-C,我們定義了一個類來管理這些宏定義,定義宏定義不同的值來決定代碼內部編譯的走向,其實也沒有很麻煩,筆者倒是覺得很方便的。
另外的一種方式——使用xcconfig文件:
我們在原來的兩個環境的基礎上增加一個環境配置來區分另外的渠道:在run或者archive的時候選擇相對應的模式去編譯!
這里需要做的東西很多,因為你增加了一個模式,就要繼續增加關於該模式的配置:
關於這部分的東西我找了一篇文章提供參考,就不贅述了:http://www.cocoachina.com/ios/20160815/17360.html