gpt4 book ai didi

objective-c - NSMutableDictionary 中没有保存键/值对

转载 作者:行者123 更新时间:2023-12-03 17:36:59 25 4
gpt4 key购买 nike

当我的应用程序启动时,它会循环将带有网格上坐标键的随机数值添加到字典中。这是一些代码:

[grid setObject:v forKey:k];

K 是“xy”形式的字符串,其中 x 和 y 是单位数整数,V 是 NSNumber。在添加之前,这两个内容都会记录到控制台,所以我知道这些不是问题。然而,尽管此代码运行了 49 次(对于 7 x 7 网格),字典最终还是空的。

网格在我的头文件中定义为:

NSMutableDictionary *grid;

然后我在应用程序加载时初始化它(但我不知道是否必须这样做)使用代码:

grid = [[[NSMutableDictionary alloc] init] retain];

这真的让我很困惑,因为我才刚刚开始学习 Objective-C,而且我来自更宽容的 C# 和 Python 世界。

预先感谢您的帮助!

最佳答案

在 Objective-C 中,向 nil(C# 世界中的 null 引用)发送消息既合法又常见。结果是nil,因此通常会悄无声息地过去。一旦您理解了这一点,就会发现它是一个非常有用的工具,可以使代码更加简洁(不检查 null 等)。因此,在向字典添加条目的行处放置一个断点。为此,请单击 Xcode 中该行旁边的装订线。打开断点运行您的应用程序。当调试器停在该行时,您可以将鼠标悬停在grid上。我怀疑您会看到它是nil (0x0)。您还可以打开运行控制台并输入po grid来打印gdb对grid的描述。再说一次,我想你会发现它是零。

如果没有看到更多代码,就无法帮助您找出为什么 gridnil

顺便说一句,您不需要在 alloc/init 之后添加额外的 -retain。读取内存Management Programming Guide for Cocoa 。它会成为你的 friend 。

关于objective-c - NSMutableDictionary 中没有保存键/值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2300259/

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