gpt4 book ai didi

objective-c - 为什么在检索 intValue 时要转换 NSMutableArray 的 NSNumber 内容?

转载 作者:行者123 更新时间:2023-12-04 18:22:29 24 4
gpt4 key购买 nike

在一些示例代码中,NSNumber被添加到一个可变数组中:

// In the .h, as an instance variable:
NSMutableArray *sequence;

// In the .m file:
sequence = [[NSMutableArray alloc] initWithCapacity:100];

[sequence addObject:[NSNumber numberWithInt:123]];

然后稍后,当需要整数时,它使用:
[(NSNumber *)[sequence objectAtIndex:aCounter] intValue]

我只是想知道为什么 Actor (NSNumber *)需要吗?因为没有它,程序也可以正常运行。这只是一个好习惯吗?如果是这样,它可以防止发生什么?如果有一个错误导致一个元素不是 NSNumber * ,然后施放它也会产生奇怪的行为。

最佳答案

强制转换只会使编译器相信对象(返回类型为 id,即没有其他信息的通用对象类型!)实际上是 NSNumber ,以便它可以正确识别其intValue等方法。它不会在运行时使事情有所不同。如果对象不是 NSNumber,那么无论是否进行强制转换,它都会在运行时崩溃。

关于objective-c - 为什么在检索 intValue 时要转换 NSMutableArray 的 NSNumber 内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10379558/

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