У меня есть следующий простой фрагмент кода:
NSMutableArray *array = [[NSMutableArray alloc] init];
NSObject *o = [[NSObject alloc] init];
NSObject *o1 = [[NSObject alloc] init];
NSObject *o2 = [[NSObject alloc] init];
[array addObject:o];
[array addObject:o1];
[array addObject:o2];
NSLog(@"-------");
NSLog(@"%d, %d, %d, %d\n", [o retainCount], [o1 retainCount], [o2
retainCount], [array retainCount]);
[array release];
NSLog(@"%d, %d, %d, %d\n", [o retainCount], [o1 retainCount], [o2
retainCount], [array retainCount]);
[o release];
[o1 release];
[o2 release];
NSLog(@"-------");
NSLog(@"%d, %d, %d, %d\n", [o retainCount], [o1 retainCount], [o2
retainCount], [array retainCount]);
в качестве вывода я получаю:
[Session started at 2010-10-27 18:00:59 +0200.]
2010-10-27 18:01:02.186 Questions[22463:207] -------
2010-10-27 18:01:02.187 Questions[22463:207] 2, 2, 2, 1
2010-10-27 18:01:02.188 Questions[22463:207] 1, 1, 1, 1
2010-10-27 18:01:02.188 Questions[22463:207] -------
и программа прерывается с помощью EXC_BAD_ACCESS.
мой вопрос следующий: я понимаю, что после вызова [release release] объекта массива больше не существует, верно?и то же самое для вызова release для других объектов, да?Если так, почему я не получаю EXC_BAD_ACCESS после вызова [array retainCount]?почему он возвращает любое значение?и почему вызов retainCount для других объектов вызывает EXC_BAD_ACCESS?
Спасибо за вашу помощь!