2016-03-30 11 views
0

私はカスタムキーボード拡張アプリケーションを持っています。これは、多くの接続エラーを記録するコンパイルされたライブラリを使用しますが、それ以外の場合は正常に動作します(AppleのNSSpellChecker)。詳細については、thisの質問(JAL's answerはうまくいきません)を参照してください。非常に長い生産ログがiPhoneで発生する可能性がある問題は何ですか?

質問:問題はどのようなiPhoneの生産ログのたくさんを持つことによって引き起こされる可能性が

  1. 。たとえば、ロングログでメモリを消費することができます(キーボード拡張は〜40MBに制限されています)。ディスク容量を消費できますか?他にどんな問題がありますか?それは確かにアプリを少し遅くするが、それは私の場合は問題ではない。

  2. アップルからクラッシュログを受け取ると、それらのスパムログはすべてNSSpellChecker

  3. @ JALは、コンパイルされたライブラリから来るログを含め、アプリでグローバルにログを記録しないようにする方法を発見しました。this wayそれは動作しますが、ロギングを再有効化するための推奨方法はありません。私がアプリケーションでログをグローバルに無効にするためにそれを使用すると、私はAppleから意味のあるクラッシュログを受け取りますか?または単に空のログですか?

これらの質問のうちのいくつかに答えることができますが、お気軽にお答えください。

答えて

0

1 - NSLog()は、間違って使用すると速度が遅くなる可能性があります。 NSLog()への呼び出しは、最初にエラーが発生した状態を引き続き観察できるところで、コンソールにエラーを出力できるように同期しています。実際にエラーを記録している場合は、これが完璧です。あなたがNSLog()を間違って使用している( "ユーザーがログインしました"のような一般情報をコンソールに出力している場合、または "ネットワーク応答を受け取りました:%@"、応答)。反復子や、drawRectやforループのように頻繁に実行されるイテレータやメソッドの内部でNSLog()を使用することに決めた場合、非常に劇的なパフォーマンスが見込まれます。

私の経験では、過度のロギングは、デバイスの記憶域に余分なスペースを占有したり、RAMを使い果たしたりすることはありません。システムは時間の経過と共に自動的にパージします。

つまり、アプリケーションのリリースビルドで誤ってログを使用すると、処理が遅くなり、コンソールにゴミが溜まる可能性があります。あなたのログに潜んでいるデバイスで後でデバッグする必要がある開発者は、それを感謝しません。

2 - AppleとTestFlightから受け取ったログはクラッシュレポートになり、クラッシュ時のスレッド/実行状態に関連する情報のみを含む傾向があります。例外が何らかの形でNSSpellChecker関連の例外に直接関係しない限り、これらのログはクラッシュレポートを支配すべきではありません。

3 - これらのメソッドはプライベートAPIを使用しており、App Storeから拒否される可能性があります。何らかの理由で開発用に使用したい場合は、先に進んでください。アプリケーションのプロダクションビルドには使用しないでください。デバッグビルドを実行していないときにログをサイレントにするか、完全に削除する必要があります。半文書化されたプライベートロギングAPIを使用してそれらを削除すると、誤用を拾った場合に校閲者によって簡単にフラグが立てられます。

+0

質問で述べたように、私は 'NSLog'を呼び出すコードを制御できません。だから私は* corectly *や*間違って使うことはできません。 Appleの誰かがすでにそれを間違って使っているので、私はそれに対処しなければなりません - [質問](http:// stackoverflow。com/q/36309812/311865)はどのようになっていますか? – drasto

+0

あなたはまだそれを得ることはできません... 3.ではログ全体を削除することを提案しています* - すべてのログを行っている 'NSLog'文が' NSChecker'の実装の一部である場合、どうすればいいですか?クラスによってコード化され、Appleによって提供されますか?コンパイルされた 'UIKit'フレームワークコードを変更することはできません。ビルドをビルドしないときにログを消音する方法については、どうすればできますか? – drasto

+0

-1あなたは私が求めているものと異なる何かに答えています。あなたの答えの一部が役に立つ(私の経験*で始まる部分)がありますが、残りのほとんどは関係ありません。 *私の質問をもう一度読んで、自分のニーズを理解して質問を編集して、私がダウンボートを削除できるようにしてください。ありがとうございました – drasto

関連する問題