2009-11-24 2 views
0
BOOL continueLoop; 
CGPoint thePoint; 

while(continueLoop != NO) 
{ 
    continueLoop = NO; 

    thePoint = [self generateRandomLocation]; 

    NSMutableArray *blocks = [self getBlocksForX:thePoint.x]; 

    for(BlueBlock *block in blocks) 
    { 
     if(block.getBlockLocationY == thePoint.y) 
     { 
      continueLoop = YES; 
     } 
    } 
    [blocks release]; 
} 

Это вызывает сбой при работе в инструментах, но не в Xcode. Я сузил проблему, это происходит, когда эта строка кода находится в цикле ... NSMutableArray * blocks = [self getBlocksForX: thePoint.x]; метод возвращает NSMutableArray, я храню его в блоках каждый раз, когда цикл выполняется, а в конце цикла я его отпускаю. Что может привести к сбою аппаратов?Строка кода вызывает сбой в инструментах, но не в Xcode

ответ

3

Поскольку вы никогда не устанавливали alloc, copy или retain, вы не должны его выпускать.

Это может помочь для таких ошибок, как запуск статического анализатора.

+0

метод возвращает выделенный NSMutableArray – ACV

+0

ah, обычное соглашение (из руководства по программированию управления памятью) 'Вы создаете« объект »с использованием метода, имя которого начинается с« alloc »или« new »или содержит« copy »' http : //developer.apple.com/mac/library/documentation/cocoa/Conceptual/MemoryMgmt/Articles/mmObjectOwnership.html#//apple_ref/doc/uid/20000043-BEHDEDDB – cobbal

+0

Хорошо, я все еще учась, я буду помнить что на будущее. – ACV