私はAppCodeを使って、私がXCodeで書いたコードを微調整します。 AppCodeはすばらしいコード検査を行い、物事が改善される場所を教えてくれます。NSUIntegerはforループと奇妙です
私は[SomeObjCFrameworkClass objectAtIndex]
が実際に真であるNSUInteger
を期待していることを指摘出くわす頻繁な検査の一つ...
- (ObjectType)objectAtIndex:(NSUInteger)index
は、しかし、私は自分自身がこのアドバイスに従うことを試みることによってめちゃくちゃ見つけておくと、 int
をNSUInteger
に変更してください。
例えば、ここで私はこの変更をした際に爆発したコードの一枚...
-(void)removeBadge
{
if ([[theButton subviews] count]>0)
{
NSUInteger initalValue = [[theButton subviews] count]-1;
//Get reference to the subview, and if it's a badge, remove it from it's parent (the button)
for (NSUInteger i=initalValue; i>=0; i--) {
if ([[[theButton subviews] objectAtIndex:i] isMemberOfClass:[MKNumberBadgeView class]])
{
[[[theButton subviews] objectAtIndex:i] removeFromSuperview];
[theButton setTitleColor:[UIColor lightTextColor] forState:UIControlStateNormal];
}
}
}
}
なぜこれが起こっているすべてのアイデアです。 以下に描かれているデバッグデータには手掛かりがありますが、わかりません。
* unsigned *の整数の場合、i = 0は* always * trueです。ループは終了せず、整数は「ラップアラウンド」します。 –
「AppCodeはすばらしいコード検査を行います。 – matt