Инструменты XCode и постоянные распределения - PullRequest
1 голос
/ 24 марта 2012

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

NSNumber *test = [NSNumber numberWithInt:score];
[scores replaceObjectAtIndex:level withObject:test];

Нет проблем.Но если я сделаю что-то вроде

float testing = (float)score/(5) * 100;
NSNumber *test = [NSNumber numberWithFloat:testing];
[scores replaceObjectAtIndex:level withObject:test];

or

[scores replaceObjectAtIndex:level withObject:[NSString stringWithFormat:@"%i", score]];

Тогда я получу проблему.Я всегда получаю 1 CFNumber Malloc, вызванный из NSPlaceholderNumber из инструмента распределения.Я инициализирую свой массив, и тогда единственный метод:

score = 75;

float testing = (float)score/(5) * 100;
NSNumber *test = [NSNumber numberWithFloat:testing];

level++;

[scores replaceObjectAtIndex:level withObject:test];    

Я не понимаю, почему один из них вызвал бы это, а не другой, или как я должен сделать это правильно, чтобы избежать этой проблемы?Я даже сделал другой проект, который ТОЛЬКО выполняет эту рутину, и у меня все еще есть проблема.Заранее спасибо за любой совет.

1 Ответ

1 голос
/ 24 марта 2012

Вам нужно определить, что вы считаете проблемой.

И numberWithInt:, и numberWithFloat: возвращают объект, который вы должны сохранить, чтобы он продолжал жить вне рамок вызова этого метода.,Вставка объекта в массив, как и вы, приводит к тому, что объект сохраняется в массиве, и, таким образом, он остается в собственности под массивом.

В этом коде нет ни утечки, нилюбая проблема в этом коде .

Ключ, который нужно помнить, заключается в том, что инструмент утечки показывает вам , где была обнаружена утечка , но не показывает строку кодаэто вызвало утечку.Т.е. если номер test просочился, то это потому, что он был перенесен в другое место.

Подождите - что вы подразумеваете под "постоянным распределением"?Т.е. интт торчит?Обратите внимание, что для определенных значений целых чисел NSNumber имеет синглтоны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...