私はコードの詳細を提供しました。 checkstatusthread()
は、5秒ごとに呼び出されます。 ipItemsArray
以下に使用されるオブジェクトは、サーバーからのXMLを格納します。NSMutableArrayを使用したもう1つのメモリリーク
// XMLAppDelegate.h
@interface XMLAppDelegate : NSObject <UIApplicationDelegate> {
NSMutableString *hostStr2;
NSData *dataURL2;
NSString *playlistdata;
}
@property (nonatomic, retain) NSMutableString *hostStr2;
@property (nonatomic, retain) NSData *dataURL2;
@property (nonatomic, retain) NSString *playlistdata;
@end
// XMLAppDelegate.m
-(void)checkstatusthread
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
hostStr2 = [[NSMutableString alloc] initWithFormat:@"http://%@/getplaylist.php?ip=%@",yourip,restip];
dataURL2 = [NSData dataWithContentsOfURL: [ NSURL URLWithString: hostStr2 ]];
playlistdata = [[NSString alloc] initWithData:dataURL2 encoding: NSASCIIStringEncoding];
ipItemsArray = [playlistdata componentsSeparatedByString:@"|^|"];
[hostStr2 release];
[playlistdata release];
status =[ipItemsArray objectAtIndex:0];
[status retain];
if([[ipItemsArray objectAtIndex:0]isEqualToString:@"0001"])
{
serverOutput1 =[ipItemsArray objectAtIndex:1];
[serverOutput1 retain];
nowplaying =[ipItemsArray objectAtIndex:2];
[nowplaying retain];
tracklocation=[ipItemsArray objectAtIndex:3];
[requestlocation retain];
requestlocation=[ipItemsArray objectAtIndex:4];
temp_app =[tracklocation intValue];
}
[serverOutput1 retain];
[nowplaying retain];
[serverOutput1 retain];
[nowplaying retain];
[tracklocation retain];
[requestlocation retain];
// checkstatus() called
[self performSelectorOnMainThread:@selector(checkstatus)
withObject:nil
waitUntilDone:false];
[pool drain];
}
- (void)dealloc {
[dataURL2 release];
[playlistdata release];
[ipItemsArray release];
}
NSArray *ipItemsArray = [playlistdata componentsSeparatedByString:@"|^|"];
は私に私はXcodeの4.2の漏れの楽器を実行するメモリリークを与えるライン。これに関するすべての可能なことを試しましたが、何かを追加する必要があるように感じます。誰かが私を助けてくれますか?
漏洩したオブジェクトのスクリーンショットです。また、私は私のアプリがDeallocメソッドを呼び出さないことに気づいた。
完了したらplaylistdataとhostStr2をリリースしていますか? –
@ShantiK:そうです。 – maddy2012
なぜあなたはステータスを2度保持していますか? –