- (NSInteger)tableVIEw:(UItableVIEw *)tableVIEw sectionForSectionIndexTitle:(Nsstring *)Title atIndex:(NSInteger)index
在某些项目(即部分索引标题)上,我只想返回“nothing”,这样表格视图就不会跳到任何部分.我试图返回nil,但是我得到“返回使整数从指针没有转换” – 警告,因为NSInteger显然不是一个对象,只是一个typedef为32/64位整数.
对于特定的部分索引标题,怎样才能得到回报/反应?
解决方法 返回nil是一个错误,因为您返回一个整数原语,而不是一个对象. (你得到一个投射警告,因为nil实际上是一个#define,它评估为((voID *)0),这是一个空指针,不是整数零).与Cocoa接口的Objective-C代码的最佳选项可能使用NSNotFound,NSIntegerMax的一个#define,它在Cocoa中用于表示给定值在接收器中不存在等(另一个选项是使用-1,这在C代码中更常见)最好取决于调用代码期望和可以处理的.)虽然NSNotFound是一个已签名的值,但它足够大,您不太可能遇到范围问题. (NSIntegerMax大约是NSUIntegerMax的一半,很少有人远程接近2,147,483,647个对象 – 更不用说在32位的地方两倍了,64位,忘记了;你的物理内存将在你的机器在您用完索引的整数之前很久.)
说到这个,Cocoa约定是使用NSUInteger(而不是NSInteger)作为索引.无符号整数不能为负,为索引值提供了一些理性保护;除了别的以外,更容易整理意外的整数溢出/下溢.如果这是一个自定义数据源方法(似乎是这样),我强烈建议切换到使用无符号整数. (它可能有助于记住/意识到NSInteger和NSUInteger占用相同数量的字节,它们只是解释不同的位,所以你不会通过切换类型“浪费”任何空间.)
总结以上是内存溢出为你收集整理的iphone – 返回Nilnteger返回类型的方法全部内容,希望文章能够帮你解决iphone – 返回Nilnteger返回类型的方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)