Я столкнулся с проблемой, которая, как кажется, называется «тонет» в пулах автообновлений.Autorelease Drowning
Мой код создает и уничтожает объекты правильно. Однако я использую некоторые методы класса, которые автоматически меняют несколько переменных, не зная об этом. Учитывая, что они целые тысячи и тысячи раз каждую минуту ... Я нахожу себя утопающим в тысячах неизданных объектов, потерянных где-то в программе.
2 вопросы:
Так как я не использую методы класса AT ALL - это то, что окончательное решение, или, несмотря на это, будут некоторые методы экземпляра (Foundation, UIKit) еще autorelease объекты без моего зная об этом?
или я могу выделить пул автоопределений до вызова методов класса и слить его после вызова методов класса - будет ли это постоянным решением?
@Dave DeLong это было хорошо. Проблема в том, что я все время использую NSUserDefaults ... и методы этого класса создают объекты с автореализацией. Теперь я понимаю, почему Apple не рекомендует. Я также использую методы NSString все время, как и тот, который вы упомянули. И во время цикла я получаю эти странные проблемы. Каково ваше предложение заменить NSUserDefaults в простой форме? Благодарю. – GSchv
@GSchv Почему, по-вашему, вам нужно заменить 'NSUserDefaults'? Если он возвращает вам объект с автореализацией и вы хотите висеть на этом объекте за пределами жизни текущего пула автозапуска, тогда просто «удерживайте» объект (а затем «отпустите» его, когда вы закончите с ним). –
'[pool drain]' является предпочтительным методом http://developer.apple.com/mac/library/documentation/cocoa/reference/foundation/Classes/NSAutoreleasePool_Class/Reference/Reference.html # // apple_ref/occ/instm/NSAutoreleasePool/release – cobbal