Это утверждение:
self.e = [[NSMutableDictionary alloc] initWithContentsOfURL:myURL];
- это чрезмерно удерживающий объект. И alloc-init, и свойство сохраняют объект.
С точки зрения владения, вы владеете объектом, возвращаемым alloc-init, и, отправив ему сообщение сохранения в методе доступа к свойству, вы снова заявляете о владении им, что приводит к чрезмерному сохранению объекта .
Вы можете использовать вспомогательный конструктор , который возвращает объект yo не владеющий , и позволяет владельцу свойства претендовать на владение им:
self.e = [NSMutableDictionary dictionaryWithContentsOfURL:myURL];
Или воспользуйтесь автоматическим выпуском:
self.e = [[[NSMutableDictionary alloc] initWithContentsOfURL:myURL] autorelease];
Или используйте временную переменную:
NSMutableDictionary *tempDict = [[NSMutableDictionary alloc] initWithContentsOfURL:myURL];
self.e = tempDict;
[tempDict release];