Lor*_*o B 1 xcode objective-c compiler-warnings
我正在现代化旧项目,并-Wconversion在Xcode上启用了标记。现在我有很多警告,例如
隐式转换将签名更改:“ NSUInteger”(又名“ unsigned long”)更改为“ NSInteger”(又名“ long”)
与以下代码交互时使用以下代码 UITableView
Item *item = [self.items objectAtIndex:indexPath.row];
Run Code Online (Sandbox Code Playgroud)
row定义为NSIntegerwhile objectAtIndex:接受NSUInteger。
是否有解决这些警告的明智方法?
更改row属性的类型以返回NSUInteger或执行以下操作:
Item *item = [self.items objectAtIndex:(NSUInteger)(indexPath.row)];
Run Code Online (Sandbox Code Playgroud)
如果您选择后者,则可能需要检查以确保结果row是肯定的。
编辑
既然row是财产NSIndexPath显然有一个很好的理由,可能是负面的还是苹果会作出它的NSUInteger,也许如果没有选中的项目,它被设置为-1。因此,您应该做的是确保row的值不为负,然后执行上述强制转换以禁止显示警告,如下所示:
NSInteger row = indexPath.row
if (row >= 0)
{
Item *item = [self.items objectAtIndex:(NSUInteger)row];
}
else
{
// whatever you need to do for no row available
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2519 次 |
| 最近记录: |