gpt4 book ai didi

objective-c - 无法识别的选择器发送到实例 [NSCFString subarrayWithRange :]

转载 作者:太空狗 更新时间:2023-10-30 03:34:13 27 4
gpt4 key购买 nike

我有以下产生此错误的代码。我不明白为什么将 subarrayWithRange 消息发送到字符串?什么时候明明是数组?

static const int kItemsPerView = 20;
NSRange rangeForView = NSMakeRange( page * kItemsPerView, kItemsPerView );

NSMutableArray *temp = [[APP_DELEGATE keysArray] mutableCopyWithZone:NULL];
NSArray *itemsForView = [temp subarrayWithRange:rangeForView];

for (int loopCounter = 0;loopCounter < r*c;loopCounter++){
NSLog(@"%i: %@ ", loopCounter, [itemsForView objectAtIndex:loopCounter]);
}

错误:

-[NSCFString subarrayWithRange:]: unrecognized selector sent to instance 0x6b071a0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: [NSCFString subarrayWithRange:]:

谢谢

最佳答案

这些类型的错误通常与内存管理相关。本质上,您正在向一个地址发送消息,而该地址现在已被其他对象占用,因为之前的占用者意外消失了。由于该地址空间可能被任何东西占用,您只是碰巧向 NSCFString 询问它不响应的内容。

如果在创建临时数组后立即暂停调试器,您会看到分配给临时数组的是什么?我猜 -keysArray 返回的东西不太对劲。您可能想要仔细检查内存在应该返回的任何内容中是如何处理的。顾名思义,我想您的应用程序委托(delegate)有一个名为“keysArray”的数组作为实例变量。也许在创建或分配时没有正确保留它?

关于objective-c - 无法识别的选择器发送到实例 [NSCFString subarrayWithRange :],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3858515/

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