0

サムネイルの読み込み後にアプリがクラッシュします。この行で、コードは画像 (サムネイル) をダウンロードしています。

else if ([tempTagName isEqualToString:@"Unicorn"])
            {   

                bottomIndexPage.unitArr = [[NSMutableArray alloc] init];
                NSArray *tempArr = [tempTagValue componentsSeparatedByString:@","];

                for (int i = 0; i<[tempArr count]; i++) 
                {

                    [bottomIndexPage.unitArr addObject:[[NSString alloc] initWithString:[tempArr objectAtIndex:i]]];

                }

出力にクラッシュ メッセージは表示されません。サムネイルを読み込む必要がありますが、ダウンロードによってアプリがクラッシュします (90 +- サムネイル)

ここに何かあると思う

 if (!loadXmlFromWeb)
    {
        xmlTextReaderPtr xmlreader = xmlReaderForMemory([xmlData bytes], 
                                                        [xmlData length], 
                                                        [path UTF8String], nil, 
                                                        (XML_PARSE_NOBLANKS | XML_PARSE_NOCDATA | XML_PARSE_NOERROR | XML_PARSE_NOWARNING));
        [self xmlParseProc:xmlreader];
    }
}
4

1 に答える 1

1

まず、このコードはリークします。Using[[ NSString alloc ] initWithString: s ]は、破棄する責任がある割り当てられたオブジェクトを返します。そのようなループでは、autoreleased string: を使用する必要があります[ NSString stringWithString: s ]

ただし、この場合、新しい文字列値はまったく必要ありません。は-componentsSeparatedByString:すでに文字列値を準備しています。から値を挿入するためのループも必要ありませんtempArr。ただ行う:

[ bottomIndexPage.unitArr addObjectsFromArray: tempArr ];
于 2012-04-06T15:42:37.070 に答える