2016-03-30 30 views
0

我有自定義鍵盤擴展程序。它使用編譯的庫,記錄了很多連接錯誤,但在其他方面工作正常(Apple的NSSpellChecker)。詳情請參閱this問題(JAL's answer工作不正常)。iPhone上的非常長的生產日誌可能會導致哪些問題?

問題:

  1. 什麼樣的問題可以通過具有iPhone上的生產日誌很多引起的。例如可以長時間記錄消耗內存(鍵盤擴展被限制在〜40MB)?它可以消耗磁盤空間嗎?我可能遇到什麼其他問題?它肯定會減慢應用程序的一點,但這對我來說不是問題。

  2. 當我收到來自蘋果的崩潰日誌將他們包括來自NSSpellChecker所有那些垃圾郵件日誌?

  3. @JAL發現了this way如何在應用程序中禁用全局日誌記錄 - 包括來自編譯庫的日誌。它可以工作,但是重新啓用日誌記錄的建議方式並不適用。如果我使用它來在我的應用程序中全局禁用日誌,我仍然會收到來自Apple的有意義的崩潰日誌?或者只是空的日誌?

即使您只能回答其中一些問題,也請隨意回答。

回答

0

1 - 的NSLog()肯定有不正確使用時,潛在的做慢下來。對NSLog()的調用是同步的,以便允許錯誤打印到控制檯,在這一點上,您仍然可以觀察導致錯誤首先發生的狀態。如果你實際上記錄錯誤,這是完美的。如果您只是將常規信息打印到控制檯(如「用戶登錄」)或(「網絡響應收到:%@」,響應),則表明您正在使用NSLog()。如果您決定在迭代器內部使用NSLog()或快速運行且經常像drawRect或for for循環的方法,您將看到非常戲劇化的性能。

過多的記錄,以我的經驗,不應該佔用的設備存儲一個額外的空間或RAM逃跑,因爲它們是短暫的,系統會自動清除它們隨着時間的推移。

話雖這麼說,在一個應用程序的發佈版本使用日誌錯誤必須慢下來和垃圾垃圾控制檯的潛力。任何需要隨後在日誌中淹沒的設備上進行調試的開發人員都不會理解它。

2 - 你從蘋果和TestFlight收到的日誌將崩潰報告,並往往只包括在崩潰的時刻有關執行的線程/狀態信息。除非異常與NSSpellChecker相關異常直接相關,否則這些日誌不應該支配您的崩潰報告。

3 - 這些方法正在使用私有API,並有可能讓您從App Store中被拒絕。如果您因某種原因想要使用它們進行開發,請繼續。您不應該將它們用於App的生產版本。您應該在未運行調試版本時將日誌保持沉默,或者完全刪除它們。用半記錄的私人日誌記錄API來消除它們可能很容易讓你被審稿人標記,如果他們接受了濫用的話。

+0

正如問題中所述,我無法控制調用'NSLog'的代碼...所以我無法使用* corectly *或*錯誤*。蘋果有人已經錯誤地使用它,我必須處理它 - [問題](http:// stackoverflow。com/q/36309812/311865)是如何的。 – drasto

+0

你還是不明白...... 3.你正在建議*刪除整個日誌* - 如果執行所有日誌記錄的'NSLog'語句是'NSChecker'實現的一部分,我該怎麼做?課程編碼並由Apple提供?!我無法修改已編譯的'UIKit'框架代碼...至於在不調試構建時沉默日誌 - 如何完成? – drasto

+0

-1您正在回答與我所問的內容不同的內容。有部分答案是有用的(部分以我的經驗*開頭*),但其餘大部分不相關。 *請*再次閱讀我的問題,嘗試瞭解我的需求並編輯您的問題,以便我可以刪除我的downvote。謝謝 – drasto

相關問題