为什么我不能
NSLog(@"mySet count: %@", [mySet count]);
然后使用NSSet? (如果我使用它,应用程序会崩溃“EXC_BAD_ACCESS”
我尝试过可变/不可变,保留,复制,自动释放......所有类型的集合,并且在计数消息之后它们都变得无用且崩溃。如果我不算数,它们就像预期的那样,如果我打印出来就像这样:
NSLog(@"mySet: %@", mySet);
没关系!问题似乎只是数不清。
有人可以解释一下这个吗?我已经搜索过,并没有发现这种奇怪的行为答案 0 :(得分:3)
这种崩溃的原因是因为[mySet count]
返回一个整数,而%@
格式说明符需要一个对象。将其更改为:
NSLog(@"mySet count: %lu", [mySet count]);
这是Objective C的“陷阱”之一(除非您已熟悉C或C ++):有时您的数据是对象,有时您的数据不是对象。这对于与C代码的兼容性是必要的。