1. 程式人生 > >iOS下Debug和Release模式

iOS下Debug和Release模式

這裡寫圖片描述
感謝rectinajh總結
這裡搬運一下:

一、Debug是除錯版本,包括的程式資訊更多,Debug通常稱為除錯版本,通過一系列編譯選項的配合,編譯的結果通常包含除錯資訊,而且不做任何優化,以為開發人員提供強大的應用程式除錯能力。
二、只有Debug版的程式才能設定斷點、單步執行、使用TRACE/ASSERT等除錯輸出語句
三、Release不包含任何除錯資訊,它往往進行了各種優化,以期達到程式碼最小和速度最優。因為是為使用者使用的,一般客戶不允許在釋出版本上進行除錯。所以不儲存除錯資訊。

四.Debug和Release和記憶體分配和釋放方式是不同的,Debug模式下記憶體會延遲釋放,weak的物件會延遲,但Release下進行了優化,所以達到釋放條件會立即釋放weak很重要,能解決迴圈引用的問題,但使用時需要小心;
如果是weak屬性,建立的物件沒有變數引用而直接賦值,Release情況下會立即釋放,Debug下會延遲釋放,如果不知道這個問題,所以很難排查出原因。

平時專案測試時以debug版本測試沒這問題,結果上線釋出時用的release版,從市場下載下來就出現了一個問題,最後開發查詢原因說是debug模式部分地方沒有像release版那樣完全釋放記憶體,我理解的意思是release釋放了,debug表面釋放但是實際並沒有釋放,所以造成我們release版出現問題而debug沒有該問題。