ソーシャルネットワークのiOSアプリのようなサンプルアプリがあります。私はcocoaフレームワークに慣れていないので、サンプルコードを研究しています。分析を押すと、アプリで255件のメモリリークが報告されています。非常に単純な約100のリークを解決できましたが、残りは解決できません。
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
//DLog(@"found this element: %@", elementName);
currentElement = [elementName copy];
if([MethodName isEqualToString:@"SignInStep"])
{
if ([elementName isEqualToString:@"item"])
{ // clear out our story item caches...
item = [[NSMutableDictionary alloc] init];
currentUserId = [[NSMutableString alloc] init];
currentError = [[NSMutableString alloc] init];
}
}
}
アイテムの変数の割り当て:
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
//DLog(@"ended element: %@", elementName);
if([MethodName isEqualToString:@"SignInStep"])
{
if ([elementName isEqualToString:@"item"])
{ // save values to an item, then store that item into the array...
[item setObject:currentUserId forKey:@"userId"];
[item setObject:currentError forKey:@"error"];
[SignIn addObject:[item copy]]; //Method returns Objective C Object with +1 retain count
}
}
}//Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1
次のエラーが発生しました。
1)メソッドは+1の保持カウントを持つObjectiveCオブジェクトを返します
2)オブジェクトのリーク:割り当てられたオブジェクトは、この実行パスの後半で参照されず、保持カウントが+1になります
私は上記のコードで、これらのリークを正確に受け取った場所について言及しました。誰かがこれを引き起こしているものを教えてもらえますか?