2011-08-05 3 views
0

J'ai les deux méthodes suivantes:ios: fuite d'avertissement pas clair

-(void)playSound { 
    NSString* filePath = [self getBasePath]; // <-- warnings appear when this is called 
} 

et

-(NSString*) getBasePath { 
    if(debug) NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__); 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES); 
     NSString *documentsDir = [paths objectAtIndex:0]; 

    if(debug) NSLog(@">>> Leaving %s <<<", __PRETTY_FUNCTION__); 
    return documentsDir; 
} 

Lorsque vous appelez playsound la Methode getBasePath est appelé. Mais alors je reçois l'avertissement suivant sur la console:

2011-08-06 00:26:56.298 Alarm[82648:5d03] *** __NSAutoreleaseNoPool(): Object 0x4e350e0 of class __NSArrayM autoreleased with no pool in place - just leaking 
2011-08-06 00:26:56.299 Alarm[82648:5d03] *** __NSAutoreleaseNoPool(): Object 0x4e350c0 of class NSCFString autoreleased with no pool in place - just leaking 
2011-08-06 00:26:56.300 Alarm[82648:5d03] *** __NSAutoreleaseNoPool(): Object 0x4b43c00 of class NSCFString autoreleased with no pool in place - just leaking 
2011-08-06 00:26:56.300 Alarm[82648:5d03] *** __NSAutoreleaseNoPool(): Object 0x4b46900 of class NSPathStore2 autoreleased with no pool in place - just leaking 
2011-08-06 00:26:56.301 Alarm[82648:5d03] *** __NSAutoreleaseNoPool(): Object 0x4e37630 of class NSPathStore2 autoreleased with no pool in place - just leaking 
2011-08-06 00:26:56.302 Alarm[82648:5d03] *** __NSAutoreleaseNoPool(): Object 0x4e35100 of class __NSArrayI autoreleased with no pool in place - just leaking 

Qu'est-ce que cela signifie?

Répondre

3

Probablement vous exécutez cette méthode pas sur le thread principal. Si vous le faites, vous devez créer un NSAutoreleasePool.

-(void)playSound { 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    int index = rand() % [soundFilenames count]; 
    NSString* filePath = [self getBasePath]; 
    [pool drain]; 
} 
+0

Merci, c'était effectivement le cas. – toom