Нет ничего плохого в освобождении выделенного объекта из другого метода, если этот метод отвечает за создание объекта в первую очередь .
Может показаться, что это неслучай в вашем примере, но если вы посмотрите между строк, mainmethod - это метод, который запрашивает новый NSMutableDictionary.
В этом смысле вы должны следовать шаблону именования , добавляяnew / alloc в вашем методе, ответственном за создание нового объекта.
Обычно вы сохраняете объект и освобождаете его в dealloc, но это не всегда так.
В общем, избегайтес помощью автоматического выпуска, если вы можете освободить объект.
-(NSMutableDictionary *)allocMutableDictionary
{
NSMutableDictionary *myDict = [[NSMutableDictionary alloc] init];
[myDict setObject:@"My Name" forKey:@"name"];
[myDict setObject:@"99" forKey:@"age"];
return myDict;
}
-(void)mainmethod
{
NSMutableDictionary *dict = [self allocMutableDictionary];
NSLog(@"dict %@",dict);
dict = nil; //making the dict nil means you don't actually release it in the next line
[dict release];
}