2012-05-13 1 views
0

В книге, которую я читаю, речь идет о том, чтобы вытеснить NSAutoreleasePool. Означает ли это создание локального NSAutoreleasePool, а затем осушение, вместо того, чтобы слить тот, который уже существует? То есть, могу ли я не сливать NSAutoreleasePool два или несколько раз?Может ли NSAutoreleasePool сливаться два или несколько раз?

+0

Что произошло, когда вы попробовали? Что еще вы узнали об этом, прочитав [документацию] (http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSAutoreleasePool_Class/)? –

ответ

2

Нет, вы не можете сливать пул авторефератов более одного раза.

это означает создание локальной NSAutoreleasePool, а затем слейте его

Да. Либо создайте новый пул и слейте его, либо (еще лучше) используйте @autoreleasepool.

Мы не можем сливать NSAutoreleasePool два или несколько раз?

Исправить. The documentation for drain:

В среде с подсчетом ссылок этот метод ведет себя так же, как и выпуск. Поскольку пул авторезистов не может быть сохранен (см. retain), это приводит к тому, что приемник будет освобожден.

Поскольку autorelease бассейн будет освобождён после первого вызова drain, он никогда не бывает, чтобы позвонить любой метод на него впоследствии, drain включены.