Не зная, что вы делаете именно, это трудно сказать, но это звучит, как вы делаете:
for (...)
[[Foo alloc] init];
В этом случае вы будете течь, так же, как если бы вы сделали
for (...)
malloc(...)
или
for (...)
new ...;
Если вы находитесь в среде GC это не проблема (в Obj-C 2, с поддержкой GC сохранить/relea se не имеют никакого эффекта вообще). Если вы не используете GC, вы пропускаете каждый объект, который вы используете.
С другой стороны, если вы делаете что-то вроде
for (...)
[[[Foo alloc] init] autorelease]
Вы не просочитесь на неопределенное время, но ни один из ваших экземпляров объектов не будет собираться до тех пор, пока не вернетесь к началу цикла событий (то есть. Ваш обработчик событий). В этом случае вы можете в конечном итоге использовать много памяти сразу, без фактического утечки в долгосрочной перспективе.
Я вызываю этот метод каждый раз, когда срабатывает таймер, который несколько раз в секунду. Я не в среде GC. Благодарю. – 2009-08-14 02:06:57
но что вы делаете код? '[[Foo alloc] init]' или '[[[Foo alloc] init] autorelease]'? – olliej