计数后NSSet无用吗?

时间:2011-07-02 18:51:26

标签: ios crash count exc-bad-access nsset

为什么我不能

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

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

我尝试过可变/不可变,保留,复制,自动释放......所有类型的集合,并且在计数消息之后它们都变得无用且崩溃。如果我不算数,它们就像预期的那样,如果我打印出来就像这样:

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

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

有人可以解释一下这个吗?我已经搜索过,并没有发现这种奇怪的行为

1 个答案:

答案 0 :(得分:3)

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

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

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