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
返回一个NSUInteger
。 NSUInteger
不是对象,它是基元。 %@
格式说明符仅在传递给它的对象上调用description
,因此您尝试在无效的原语上调用方法。
将日志更改为NSLog(@"%d",arrayOfBookViews.count);
,您将得到想要的结果。