私はそれを手に入れません! インスツルメンツはリークはどこですか?
-(void)loadData
{
if (locationData != nil) {
[locationData release];
}
self.locationData = [[NSMutableArray alloc] init];
NSData *recievedData = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://htmlwin001.******.net/blutalkasp/locations2.asp?uid=%@&von=%d&bis=%d", [[UIDevice currentDevice] uniqueIdentifier], von, bis]]];
NSString *recievedString = [[NSString alloc] initWithData:recievedData encoding:NSUTF8StringEncoding];
SBJsonParser *json = [[SBJsonParser alloc] init];
NSMutableDictionary *jsonData = [json objectWithString : recievedString];
NSString *tmpLocationData;
for (NSDictionary *location in [jsonData objectForKey:@"items"]) {
Location *newLocation = [[Location alloc] init];
tmpLocationData = [[NSString alloc]initWithFormat:@"%@", [location objectForKey:@"id"]];
[newLocation setLocationID:tmpLocationData];
[tmpLocationData release];
tmpLocationData = [[NSString alloc]initWithFormat:@"%@", [[location objectForKey:@"locationname"] gtm_stringByUnescapingFromHTML]];
[newLocation setLocationName:tmpLocationData];
[tmpLocationData release];
tmpLocationData = [[NSString alloc]initWithFormat:@"%@",[location objectForKey:@"locationdistance"]];
[newLocation setLocationDistance:tmpLocationData];
[tmpLocationData release];
tmpLocationData = [[NSString alloc]initWithFormat:@"%@", [[location objectForKey:@"locationaddress"] gtm_stringByUnescapingFromHTML]];
[newLocation setLocationAdress:tmpLocationData];
[tmpLocationData release];
tmpLocationData = [[NSString alloc]initWithFormat:@"%@", [[location objectForKey:@"locationdescription"] gtm_stringByUnescapingFromHTML]];
[newLocation setLocationDescription:tmpLocationData];
[tmpLocationData release];
NSNumber *tmpLocationLat = [[NSNumber alloc] initWithInteger:[[location objectForKey:@"locationlatitude"]integerValue]];
[newLocation setLocationPositionLat:tmpLocationLat];
[tmpLocationLat release];
NSNumber *tmpLocationLng = [[NSNumber alloc] initWithInteger:[[location objectForKey:@"locationlongitude"]integerValue]];
[newLocation setLocationPositionLng:tmpLocationLng];
[tmpLocationLng release];
NSString *URL;
URL = [location objectForKey:@"locationimage1"];
URL = [URL stringByReplacingOccurrencesOfString:@"[SLASH]" withString:@"/"];
NSString *tmpUrl1 = [[NSString alloc]initWithFormat:@"http://htmlwin001.******.net/blutalkasp/locationimages/data/%@", URL];
[newLocation setLocationImageURL1:tmpUrl1];
[tmpUrl1 release];
URL = [location objectForKey:@"locationimage2"];
URL = [URL stringByReplacingOccurrencesOfString:@"[SLASH]" withString:@"/"];
NSString *tmpUrl2 = [[NSString alloc]initWithFormat:@"http://htmlwin001.******.net/blutalkasp/locationimages/data/%@", URL];
[newLocation setLocationImageURL2:tmpUrl2];
[tmpUrl2 release];
URL = [location objectForKey:@"locationimage3"];
URL = [URL stringByReplacingOccurrencesOfString:@"[SLASH]" withString:@"/"];
NSString *tmpUrl3 = [[NSString alloc]initWithFormat:@"http://htmlwin001.******.net/blutalkasp/locationimages/data/%@", URL];
[newLocation setLocationImageURL3:tmpUrl3]; //Leak geschlossen
[tmpUrl3 release];
[self.locationData addObject:newLocation];
[newLocation release];
}
[recievedString release];
[json release];
}
はそれが[nsdictionaryobject objectForKey:@"xy"];
が漏れを起こしている可能性がある私は、この方法では、リークを示していますか?
特に計器ではこれらの線が着色されているためです。ご覧のとおり、私はすべてをリリースしていました。 私はそのアプリに絶望的です。私は便利なコンストラクタをalloc/init/release(例えば、stringWithFormat
ではなくinitWithFormat
)で置き換え始めました。特にループ内で!
しかし、時々楽器がクラッシュすることもあります。プロパティlocationData
は、あなたが次の行にメモリリークを作成している保持するように設定されている場合は
あなたのアドバイスをお試しさせていただきます。しかし、このプロジェクトの対象となった顧客に問題があったので、もう急いではありません。しかし、私は客観的なことについてもっと学ぶためにこのコードを書いています。私はこのことについて良い本が必要だと思う。 –