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在此程序中使用自动引用计数。
请解释为什么代码中的最后一行会产生内存错误。感谢。
答案 0 :(得分:2)
arrayOfBookViews.count
会返回NSUInteger
。 NSUInteger
不是一个对象,它是一个原始对象。 %@
格式说明符只是在传递给它的对象上调用description
,因此您尝试在无效的基元上调用方法。
将日志更改为NSLog(@"%d",arrayOfBookViews.count);
,您将获得所需的结果。
答案 1 :(得分:0)
您尝试打印int
值。请使用%d
:
NSLog(@"%d",arrayOfBookViews.count);
答案 2 :(得分:0)
请检查NSArray的-count
方法的返回类型。您会发现它是NSUInteger
,它是unsigned int
或unsigned long
的typedef,它是标准的C类型。您应该在格式说明符中使用%u
或%lu
。