Это мой код:О autorelease/выпуска и [выпуска пула]
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *string = [[NSString alloc] initWithFormat:@"s"];
[string autorelease];
NSLog(@"retainCount of string is %d", [string retainCount]);
[pool release];
NSLog(@"retainCount of string is %d", [string retainCount]);
Когда я пытаюсь понять autorelease и отпустить, я запутался. Если вы используете [строка autorelease], после отправки сообщения о выпуске в пул, keepCount строки все равно 1. Но используйте [строковый выпуск], чтобы заменить [string autorelease], наконец, сохранитьCount строки будет 0. То, что я знаю об autorelease «добавляет объект в текущий пул автозапуска для последующего выпуска, отправив ему сообщение автореферата». Почему я отправил сообщение об автоопределении и освободил пул, я все равно могу получить доступ к объекту.
keepCount никогда не может вернуть нуль. Обмен сообщениями с деалоцированным объектом приводит к неопределенному поведению. – bbum