在啓用ARC的Objective-c中以下是否合法?initWithObjects上的NSMutableArray EXEC_BAD_ACCESS
NSMutableArray * smallArray = [[NSMutableArray alloc] initWithObjects:@"1", @"2", @"3", nil];
smallArray = [[NSMutableArray alloc] initWithObjects:@"4", "5", nil];
我認爲應該是。但是,在這種情況下,它會在第四行給我EXEC_BAD_ACCESS:
NSMutableArray * bigArray = [[NSMutableArray alloc] init];
NSMutableArray * smallArray = [[NSMutableArray alloc] initWithObjects:@"1", @"2", @"3", nil];
[bigArray addObject: smallArray];
smallArray = [[NSMutableArray alloc] initWithObjects:@"4", "5", nil];
addObject將指針向右複製?所以如果我給smallArray分配一段新的內存來指出,那有什麼問題呢?
但是這個代碼段不會崩潰:
NSMutableArray * bigArray = [[NSMutableArray alloc] init];
NSMutableArray * smallArray = [[NSMutableArray alloc] initWithObjects:@"1", @"2", @"3", nil];
[bigArray addObject: smallArray];
smallArray = [[NSMutableArray alloc] init];
[smallArray addObject:@"4"];
[smallArray addObject:@"5"];
這是怎麼回事?
不是很清楚這件事,但我碰巧看到'initWithObjects:@「4」,「5」,nil]'...你有沒有在''5'之前丟失'@' '? – Kjuly 2012-07-18 14:20:06