arrayOfBookViews = [[NSMutableArray alloc] init];
BookView *book1 = [[BookView alloc] init];
[arrayOfBookViews addObject:book1];
BookView *book2 = [[BookView alloc] init];
[arrayOfBookViews addObject:book2];
NSLog(@"%@",arrayOfBookViews);
NSLog(@"%@",arrayOfBookViews.count);

运行这段代码给我:
(
“”,

)
这是由于倒数第二行。最后一行向我抛出了一个exc_bad_access内存错误。由于数组及其对象已正确分配和初始化,因此我不明白为什么要求数组计数会给我带来内存问题。我目前在此程序中使用带有xcode 4的自动引用计数。

请解释为什么代码中的最后一行会产生内存错误。谢谢。

最佳答案

arrayOfBookViews.count返回一个NSUIntegerNSUInteger不是对象,它是基元。 %@格式说明符仅在传递给它的对象上调用description,因此您尝试在无效的原语上调用方法。

将日志更改为NSLog(@"%d",arrayOfBookViews.count);,您将得到想要的结果。

10-06 01:03