0

NSLogs を使用してデバイスでアプリを実行すると、アプリの速度がある程度低下する可能性があります。

NSAssert はメモリ面で NSLog と同じように動作しますか?

コメントや提案をいただければ幸いです。

前もって感謝します。

4

2 に答える 2

2

多分これはあなたの質問に答えるでしょう

Xcode 4.2 の時点で、NS_BLOCK_ASSERTIONS マクロを定義することによって達成されるリリース ビルドでは、アサーションがデフォルトでオフになっていることに注意することが重要です。つまり、リリース用にコンパイルすると、NSAssert & co. へのすべての呼び出しが行われます。効果的に除去されます。

ソース: http://nshipster.com/nsassertionhandler/

それらを有効のままにしておくと、コストがかかります(明らかに評価する必要があります)。実行するコードによって異なります。単純な nil 比較では、無視できます。

詳細については、http: //www.mikeash.com/pyblog/friday-qa-2013-05-03-proper-use-of-asserts.htmlを参照してください。

具体的にはこの一節

ランタイム コストは無視できるはずです。そうでない場合は、アサートをやり直して修正する必要があります。

于 2013-12-10T14:57:06.233 に答える
1

XCode では、リリース時にデフォルトでアサーションが無効になっているため、処理時間はかかりません。ビルド設定をチェックインすると、NS_BLOCK_ASSERTIONS が 1 に設定され、その場合の NSAssert 定義を調べます。

#define NSAssert(condition, desc, ...) do {} while (0)

コンパイル時に削除される空のループ。

于 2013-12-10T14:58:24.043 に答える