我使用 AppCode 来调整我在 XCode 中编写的代码。AppCode 进行了很棒的代码检查,并告诉您可以改进的地方。
我遇到的一项经常检查指出,这是在[SomeObjCFrameworkClass objectAtIndex]
期待一个NSUInteger
实际上是真的......
- (ObjectType)objectAtIndex:(NSUInteger)index
但是,我一直发现自己试图遵循这个建议并将我int
的 s 更改为NSUInteger
s 让自己搞砸了。
例如,这是我进行此更改时爆炸的一段代码...
-(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];
}
}
}
}
知道为什么会这样。下图的调试数据中有一个线索,但我无法理解它。