Что такое пул в Foundation Kit? - PullRequest
1 голос
/ 27 июня 2010

Каждый раз, когда я пишу новое приложение для iPhone, я начинаю с создания цели, добавления фреймворков и написания этого в новом main.m:

NSAutoReleasePool *pool = [[NSAutoReleasePool alloc] init];
// etc...

Что такое на самом деле такой бассейн? Для чего это? Это, конечно, не защищает устройство, когда оно падает в бассейн. Но почему это там? Мне это нужно? Это полезно или зло? Спасибо

Ответы [ 2 ]

4 голосов
/ 27 июня 2010

NSAutoreleasePool отвечает за обработку бесхозных объектов и освобождение их при освобождении пула.Я предлагаю вам прочитать эту документацию по теме.

С примером:

  • Вы создаете NSAutoreleasePool.
  • Ваш кодвызов метода, который возвратит объект.
  • В этом методе вы создаете объект, но не хотите сохранять его право собственности.Таким образом, вы отправляете этому объекту сообщение autorelease, которое скажет: «Я больше не владею этим объектом».Бассейн теперь заботится об объекте.Обратите внимание, что даже если объект не является собственным, он не освобождается.
  • В вызывающем коде вы получаете результирующий объект.Поскольку объект еще жив, вы можете использовать его.
  • Когда пул освобождается, объект будет освобожден.
1 голос
/ 27 июня 2010

Пул автоматического выпуска - это объект, о котором вы можете подумать, что перехваты считаются «автоматически выпущенными», и когда пул очищается (отправляется сообщение drain), каждый из этих объектов в пуле отправляется -метод выпуска.

...