2016-08-05 6 views
0

これは何よりも迷惑です。他の誰かがこれを横切って走っている?NSLogのunsigned intとunsigned long Xcodeの警告

デバッグの目的で、私は_fetchedResultsのカウントを吐き出しています。 Xcodeは私が%uを使用したときに私にunsigned intの警告を与え、それを%luに変更することを提案します。

enter image description here

OK Xcodeは、必ず、右先に行きます。

そして、それはすぐにunsigned long警告で再び私に吠え、バック%lu%uそれを変更することができます。そして、このサイクルが繰り返されます。もちろん、NSLogは削除できますが、テスト中に使用しています。そして率直に言って、それは他の何よりも迷惑です。

enter image description here

他の誰が前にこの全体を実行?どのくらい重要かは分かりませんが、9.0.xのデプロイメントターゲットでXcode 7.3を使用しています。このSOスレッド

+1

XCodeのは、64-ビット/ 32ビットデバイスの場合には警告をスロー可能性があるため、私は ''%の@ 'と' @(myIntLongOrWhatverPrimitiveNum)を使用します – Larme

+0

解決策を説明したので別の答えを追加しませんが、 '%@'と '@(myInt)'を使うだけのアドバイスがあります。それは最も簡単な解決策です。 – Sulthan

答えて

3

チェックアウト: Compile NSLog with unsigned int and unsigned long

それは

NSLog(@"Array has %ld elements.",(unsigned long)[array count]); 

もsays-

最良の方法はNSUIntegerためNSLog(@"%lu", (unsigned long)array.count);で、
NSLog(@"%ld", (long)button.tag); NSIntegerのためのsays- 32ビットまたは64ビットのいずれの警告も表示されません。

+0

甘いおかげでDashAndRestとuser3182143 ...私が今までStackで受け取った最速の答え。良い週末を。 :-) – Drew

2
NSLog(@"row: %lu", (unsigned long)[_fetchedResultsController.fetchedObjects count]); 

説明

32ビットプラットフォーム64ビットプラットフォーム上の

64ビット符号なし整数に32ビットの符号なし整数。デバッグの目的のために時々

Type  Format Specifier Cast 
----  ---------------- ---- 
NSInteger %ld    long 
NSUInteger %lu    unsigned long 
関連する問題