У меня странная ситуация, и я надеюсь, что кто-то может пролить свет на это.Я реализую протокол NSCoding
в пользовательском объекте и сталкиваюсь с утечками памяти в initWithCoder:
.У меня есть что-то вроде этого:
NSString* titleTemp = [aDecoder decodeObjectForKey:@"title"];
if(titleTemp) {
[self setTitleString:titleTemp];
} else {
[self setTitleString:[NSString string]];
}
У меня есть много других свойств этого объекта, некоторые из них массивы, некоторые строки и некоторые примитивы (double, int), и я постоянно получаю утечки памяти в этомметод.Инструменты говорят мне, что утечка происходит при каждом декодировании в строке decodeObjectForKey:
.Когда вы пропускаете каждый отдельный декодированный объект внутри каждого пользовательского класса в массиве из 10+ объектов, память начинает складываться.
Но что меня действительно озадачило, так это вывод этого кода:
NSString* titleTemp = [aDecoder decodeObjectForKey:@"title"];
NSLog(@"%i", titleTemp.retainCount);
- это "3"!
Вау, откуда все эти остатки?Бьет меняНо я хотел бы знать со всеми этими утечками.Спасибо!