隐式转换会改变签名

时间:2014-06-24 10:17:01

标签: objective-c

我收到了编译器的警告:

Implicit conversion changes signedness: 'NSInteger' (aka 'int') to 'NSUInteger' (aka 'unsigned int')

来自此代码:

- (NSInteger) tableView:(__unused UITableView *)tableView numberOfRowsInSection:(__unused NSInteger)section {
    return [_data count];
}

我理解警告(委托方法期望NSInteger,但它的方式是奇怪的)。如果我将[_data count]转换为NSInteger,这是正确的方法来使警告静音吗?

它可能(非常不可能,但是因为我正在学习)缓冲区溢出。由于演员阵容会减少可能的数值。

1 个答案:

答案 0 :(得分:0)

制作演员阵容是可以的;这表明你有意进行转换。

这不会导致缓冲区溢出。在特殊情况下,它可能会导致价值低于您的预期(因为NSUInteger可以保持比NSInteger更大的正值。

但是,考虑到UITableView中这个代表的实际使用情况,不可能出于所有意图和目的,这是不可能的。