我正在尝试在appdelegate中使用全局数组作为我正在构建的演示的快速修复。这个
的相关代码.h文件具有声明
{
NSMutableArray * trnEntered;
}@property(nonatomic,retain)NSMutableArray * trnEntered
.m文件包含以下代码 -
trnEntered = [[NSMutableArray alloc] init];
NSLog(@“%@”,[trnEntered count]); //打印空。
[trnEntered addObject:@“1”];
NSLog(@“%@”,[trnEntered count]); //执行不良访问。
不知道我在哪里错了。看起来相当直接。
感谢您的帮助,
的Teja。
答案 0 :(得分:3)
您的代码似乎存在问题:
NSLog(@"%@",[trnEntered count]); // prints null.
[trnEntered addObject:@"1"];
NSLog(@"%@",[trnEntered count]); // exec bad access.
对NSLog的两次调用都试图将NSUInteger
打印为Objective-C对象。这将导致问题。您应该使用NSLog(@"%d", [trnEntered count]);
我建议你在format specifiers上阅读更多内容,有很多有用的信息。
作为更多信息:第二个NSlog
正在尝试打印代码声称位于内存位置0x00000001的NSObject的description
。
答案 1 :(得分:0)
第一个NSLog不应该打印'null',你的init方式有问题。试试这个。
trnEntered = [[NSMutableArray alloc] initWithCapacity:1];
答案 2 :(得分:0)
trnEntered = [[NSMutableArray alloc] init];
NSLog(@"%@",[trnEntered count]); // prints null.
[trnEntered addObject:@"1"];
NSLog(@"%@",[trnEntered count]); // exec bad access.
原因是因为您使用格式化程序字符串错误。您尝试使用整数作为字符串指针,这当然会导致分段错误(或苹果术语中的EXC_BAD_ACCESS)。使用%d打印一个整数,这是[trnEntered count]返回的值。
答案 3 :(得分:0)
NSLog
以字符串格式打印,因此如果要打印整数值,则必须使用%d
及其值。