【发布时间】:2013-03-22 01:22:31
【问题描述】:
我在使用 2 个 NSString 对象 @"00:00:00" 初始化名为 _entryArray 的 NSMutableArray 时遇到问题。我收到以下错误:
由于未捕获的异常“NSRangeException”而终止应用,原因:“* -[__NSArrayM objectAtIndex:]: index 1 beyond bounds for empty array”
当我尝试在其中没有任何对象的情况下对其进行初始化时,我没有收到任何错误。我该怎么办?
非常感谢
代码:
@implementation MainViewController{
@private
int n;
NSMutableArray *_entryArray;
NSMutableArray *_timeSinceLastEntryArray;
NSMutableArray *_timeInterval;
NSMutableArray *_timeInBackup;
NSMutableArray *_timeOutBackup;
BOOL whichButton;
}
-(void)viewWillAppear:(BOOL)animated {
}
- (void)viewDidLoad
{
[super viewDidLoad];
n=0;
_brain = [[Brain alloc] init];
_entryArray = [[NSMutableArray alloc] initWithObjects:@"00:00:00",@"00:00:00",nil];
_timeSinceLastEntryArray = [[NSMutableArray alloc] init];
_timeInBackup = [[NSMutableArray alloc] initWithObjects:(NSNumber *)0, nil];
_timeOutBackup = [[NSMutableArray alloc] initWithObjects:(NSNumber *)0, nil];
_timeInterval = [[NSMutableArray alloc] init];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
}
【问题讨论】:
-
您引用的例外情况是什么声明? (当然不是您上面列出的陈述之一。)
-
_timeInBackup = [[NSMutableArray alloc] initWithObjects:(NSNumber *)0, nil];应该是_timeInBackup = [[NSMutableArray alloc] initWithObjects:@0, nil];或旧语法_timeInBackup = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithInt:0], nil];同样适用于_timeOutBackup。 -
(但是,如果您对创建的数组进行 NSLog 记录,您可能会学到一些东西。_timeInBackup 和 _timeOutBackup 不包含您认为的值。)
-
这是我想不通的。如果我只用 [[NSMutableArray alloc] init] 初始化 _entryArray,我不明白,但如果我尝试用对象初始化它,应用程序甚至都不会启动
-
_entryArray 没问题。但是 NSLog 一切,让你明白你有什么。
标签: ios nsstring nsmutablearray init