Что-то не так с моим кодом? - PullRequest
       0

Что-то не так с моим кодом?

0 голосов
/ 25 августа 2010
-(void)processGlyph:(int)glyphOne withGlyph:(int)glyphTwo
{
    answer = glyphOne + glyphTwo;
    NSString *tempText = [[NSString alloc] init];
    tempText = [NSString stringWithFormat:@"%i",answer];
    [self dispatchText:tempText];
    [tempText release];
}

-(void)checkReadyToProcess
{
    if (count >= 2) {
        [self processGlyph:firstGlyph withGlyph:secondGlyph];
    }
}

-(void)dispatchText:(NSString *) theText
{
    answerText.text = theText;
}

1 Ответ

7 голосов
/ 25 августа 2010

Да.Это здесь:

NSString *tempText = [[NSString alloc] init];//leaked
tempText = [NSString stringWithFormat:@"%i",answer];//creates new autoreleased object
...
[tempText release]; //causes an eventual crash

Вы выделяете NSString, заменяя переменную на автоматически освобожденную NSString, а затем освобождая автоматически выпущенную NSString.Это приведет к утечке памяти (из оригинальной NSString) и падению из-за чрезмерного выпуска.

Вместо этого просто выполните:

NSString *tempText = [NSString stringWithFormat:@"%i",answer];

Вам не нужно выпускать его.

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