gpt4 book ai didi

ios - if语句Objective-C中的评估(NSIntegers)

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:25:03 25 4
gpt4 key购买 nike

我有疑问,为什么它能正常工作:

NSInteger row = indexPath.row;
NSInteger preloadTrigger = self.nodes.count - 20;
if (row >= preloadTrigger) {
[self.loader loadNextposts];
}

这不会(只是跳过 if 语句):

if (indexPath.row >= self.nodes.count - 20) {
[self.loader loadNextposts];
}

self.nodes.count - 20 的值为负时。

然而,当表达式的值为正数时,它总是工作正常。

一个非常奇怪的行为,因为我看不到两个表达式的语义差异。

更新:所以,我决定测试一下:

(lldb) po self.nodes.count - 20
18446744073709551601

(lldb) po preloadTrigger
-15

最佳答案

根据 Apple Docs , count 属性是 objective-C 中的 NSUInteger

当你写的时候:

 NSInteger preloadTrigger = self.nodes.count - 20;

事实上,您正在将 count 转换为 NSInteger 对象,并且如果 count 不大于 20,则可以具有负值。

但是当你写的时候:

(indexPath.row >= self.nodes.count - 20)

count 是一个 NSUInteger 对象,从中减去 20 总是会得到一个正数(顺便说一句,这是一个很大的数)。

关于ios - if语句Objective-C中的评估(NSIntegers),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35265279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com