【发布时间】:2012-10-28 02:34:15
【问题描述】:
UITableView 数据源方法numberOfSectionsInTableView: 的返回类型为NSInteger。然而,一个 UITableView 不能有负数的行;它有 0 行或更多行,那么为什么返回类型是 NSInteger?这不允许与返回负整数有关的崩溃吗?
【问题讨论】:
-
我认为没有充分的理由。它应该是未签名的。
-
@EricS - 在我阅读下面 borrrden 的回答之前,我同意你的看法。
-
@stackmonster - 部分是因为我想知道 Apple 是否粗心并在分配返回值类型
NSInteger时犯了错误,但主要是因为我对方法的设计感兴趣,以及什么会影响 Apple 工程师使此特定方法具有此特定返回类型,当我问这个问题时,这似乎违反直觉。 -
我完全不明白 borrrden 的回答。节数只能为零或更高。几乎按照定义,它应该是一个无符号整数。在 open() 之类的情况下,-1 表示错误条件,因此它确实有意义——为变量设置一个无效值很方便,例如指针为 NULL/nil。
-
Apple 似乎正试图遵循某种约定,即始终使用 NSInteger,即使它没有意义。这些方法的返回类型并不像它们使用 NSInteger 作为
numberOfRowsInSection的参数类型那样糟糕,其中一个相当常见的实现可能是使用该部分作为 NSArray 的索引。发生这种情况时,我必须手动将类型转换为 NSUInteger,如[mySectionArray objectAtIndex:(NSUInteger)section],因为它们传入的是 NSInteger 而不是 NSUInteger
标签: ios crash uitableview nsuinteger