numberOfSectionsInTableView:
是UITableView的数据源方法之一,其返回值类型为NSInteger
。但是,UITableView不能具有负数行数;它只能有0或更多行,那为什么返回类型是NSInteger?这难道不会导致返回负整数而导致崩溃吗?
numberOfSectionsInTableView:
是UITableView的数据源方法之一,其返回值类型为NSInteger
。但是,UITableView不能具有负数行数;它只能有0或更多行,那为什么返回类型是NSInteger?这难道不会导致返回负整数而导致崩溃吗?
使用无符号整数无法进行检查 (if var < 0) return;
,这是偏好使用有符号整数的标准原因。实际上,使用无符号整数的唯一原因是如果你需要更大的数字空间,而且你可以保证输入永远不会小于零。
NSArray count]
和其他NSArray方法上使用NSInteger。 - Tim DeannumberOfRowsInSection
方法,再次传入了一个NSInteger。苹果在这里控制着管道,并且可以确定不会传入负值,但他们仍然传入了NSInteger而不是NSUInteger。最终,我认为合理的人们可能会对任何给定情况下哪种策略最好存在分歧。但仅在需要额外空间时才使用NSUInteger,我无法接受这一点,显然苹果也并非总是这样做。 - Tim DeannumberOfRowsInSection
的流程。这是另一个数据源方法,用户可以从自己的类中返回以影响表视图。我想我看待它的方式是“为什么要使用无符号值,当有符号值涵盖了有效范围并且是默认值?” - borrrdennumberOfRowsInSection
参考是特指传递给方法的部分索引值,而不是它返回的值。Apple通过section参数控制传递给该方法的内容,但它将其声明为NSInteger(如果我将该值用作NSArray的索引,则需要进行annoying cast转换为NSUInteger)。我回答“为什么要麻烦”的问题很简单:接口应尽可能自我解释。如果您从不打算支持负值,请勿通过声明不同来让我进行研究。 - Tim Dean
NSInteger
,但更多的是因为我对方法的设计感兴趣,以及什么会影响苹果工程师使这个特定的方法具有这种特定的返回类型,当我提出问题时,它似乎是违反直觉的。 - pasawaya[mySectionArray objectAtIndex:(NSUInteger)section]
,所有这些都是因为他们传入了 NSInteger 而不是 NSUInteger。 - Tim Dean