gpt4 book ai didi

ios - iphone nslog 损坏的数据

转载 作者:行者123 更新时间:2023-11-28 17:48:31 26 4
gpt4 key购买 nike

我在变量值方面遇到了一个奇怪的问题。这是代码(它是类方法的一部分):

MyAppDelegate *pDelegate = [[UIApplication sharedApplication] delegate];
SomeDictionaryData *appData = [pDelegate.theData retain];
NSLog(@"my instance var: %@",cardIndex); // outputs "my instance var: 4"
NSDictionary *currentCard = [[NSDictionary alloc] initWithDictionary:[appData.cards objectAtIndex:cardIndex]];;
// the above line breaks the app
[currentCard release];
[appData release];

我正在使用带有 objc_exception_throw 断点的调试器。 objectAtIndex 接收到的输入显示值 = 13760640。appData 的 cards 属性是一个 NSArray,它显然没有十个百万以上的项目,所以我得到了一个越​​界错误。我尝试使用 (int)cardIndex 进行转换,但没有更好的结果。奇怪的是,其他一些类中的类似代码工作正常。

这是我想在整个应用程序中使用的一些数据,因此我有一个模型类,它在 AppDelegate 中初始化为 theData,然后由不同的 ViewController 访问。在对其他某个 ViewController 进行一次成功访问后(该 ViewController 也确实保留/释放)出现此错误。

我们将不胜感激。

最佳答案

[cardIndex unsignedIntValue] 用于 objectAtIndex: 行。

您不能给 objectAtIndex: 一个指针,因为它需要一个无符号整数。

例如:

NSDictionary *currentCard = [[NSDictionary alloc] initWithDictionary:[appData.cards objectAtIndex:[cardIndex unsignedIntValue]]];

编辑:

这听起来像 cardIndex 是一个 int 但在某些地方它被设置为一个 NSNumber 实例。作为 hack,使用 [(id)cardIndex unsignedIntValue]。如果这有效,则意味着您为 cardIndex 使用了错误的类型(它应该是 NSNumber,而不是 int)。

关于ios - iphone nslog 损坏的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1325697/

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