0

为什么我做不到

NSLog(@"mySet count: %@", [mySet count]);

然后使用NSSet?(如果我确实使用它,应用程序会因“EXC_BAD_ACCESS”而崩溃

我尝试过可变/不可变、保留、复制、自动释放......各种集合,在计数消息之后,它们都变得无用并崩溃。如果我不计算它们的行为是否符合预期,并且如果我像这样打印它们:

NSLog(@"mySet: %@", mySet);

没关系!问题似乎只是计数。

有人可以解释一下吗?我已经搜索并没有发现任何关于这种奇怪行为的信息

4

1 回答 1

3

崩溃的原因是[mySet count]返回一个整数,并且%@格式说明符需要一个对象。将其更改为:

NSLog(@"mySet count: %lu", [mySet count]);

这是 Objective C 的“陷阱”之一(除非您已经熟悉 C 或 C++):有时您的数据是对象,有时您的数据不是对象。这是与 C 代码兼容所必需的。

于 2011-07-02T18:53:12.310 回答