2012-04-02 11 views
0

私はnoobの問題のようなものを知っているが、それは2日間私を殺して今 私は次のコードiphone:割り当て解除インスタンスに送信されたメッセージ

albumsVC.discList = [[NSMutableArray alloc]init]; 
for(id song in songs){ 
    if([self checkIfAllFilesExist:[song objectForKey:@"fileName"]]){ 
     [albumsVC.discList addObject:song]; 
    } 
} 

-(BOOL)checkIfAllFilesExist: (NSString *) theFilename { 
    BOOL exist; 
    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentDir = [documentPaths objectAtIndex:0]; 
    docPath = [ documentDir stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp3",theFilename]]; 

    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    exist = [fileManager fileExistsAtPath:docPath]; 
    docPath = nil; 
    docPath = [[NSString alloc] init]; 
    if(!exist){ 
     return NO; 
    } 
    return YES; 
} 

を持っていますが、それは後にクラッシュします5つのループ(私はなぜ5つを知らないのですか?)、それは解放されたインスタンスに送られたメッセージ0x87cdc10

docPath = [ documentDir stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp3",theFilename]]; 

ここで、docPathは非構造として作成されたヘッダのNSStringです。

私は問題を解決できませんか?

+0

まず、あなたの回答率を向上させてください。誰も66% –

+1

製品>スキームの編集...>実行>ゾンビオブジェクトを有効にすると、問題の原因をさらに突き止めるかもしれません。あなたはそれを試しましたか? –

+0

楽器を使用しようとしましたか?この種の問題に非常に役立ちます。 –

答えて

0

-(BOOL)checkIfAllFilesExist: (NSString *) theFilenameは、メモリリークを作成します。

は、以下のコードに置き換えます

-(BOOL)checkIfAllFilesExist: (NSString *) theFilename { 
    BOOL exist; 
    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentDir = [documentPaths objectAtIndex:0]; 
    self.docPath = [ documentDir stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp3",theFilename]]; 

    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    exist = [fileManager fileExistsAtPath:docPath]; 
    if(!exist){ 
     return NO; 
    } 
    return YES; 
} 

あなたがアトミックであなたの.hファイルでdocPathプロパティを持っていると仮定し、維持します。

+0

いいえそれは働いていない:(私に同じエラーを与える –

0

ループの5番目の反復で常にクラッシュすると言うので、ループするbjectを確認してください。

つまり、theFilenameを確認してください。 'song'辞書を印刷して、fileNameキーに何かがあることを確認してください。

また、Apurvコードを使用してください。

+0

Apurvコードが動作していない:( –

+0

私はnslogそれは私に5番目の要素で私を与える曲2012年4月11日:40:34.880 AWahab [2937:17603] *** - [CFString isNSString__]:割り当て解除されたインスタンスにメッセージが送信されました0x87a7d10 –

+0

Apurvコードを追加するよう依頼しましたが、これはあなたが今よりもきれいであることを示しています。 – Vignesh

関連する問題