XCode で iOS プロジェクトの 'Signed Comparision' (別名 -Wsign-compare) 警告をオンにしました (驚くべきことに、デフォルトではオフになっていました)。その後、次のような多くの警告が表示されました。
/Users/michalciuba/projects/GlobeMobile/Classes/ACMailController.m:86:19: Comparison of integers of different signs: 'NSInteger' (aka 'long') and 'NSUInteger' (aka 'unsigned long')
これらは通常、row
のプロパティをの 'count' メソッドによって返される値NSIndexPath
と比較することによって発生します。たとえば、次のようになります。NSInteger
NSArray
if(indexPath.row < [self.myDataArray count])
警告は、キャストすることで簡単に修正できます。
if(indexPath.row < (NSInteger)[self.myDataArray count])
ただし、そのような値が比較されているすべての場所で行う必要があります。そして、それらは数十の場所で比較されています。この問題を解決するためのより良い、より賢い方法があるのだろうか? 符号なし整数のアンダーフローなどの問題を防ぐのに役立つ可能性があるため、この警告をオフにしたくありません。