У меня проблема с этим кодом, она работает над средой отладки. На инструментах я вижу проблему утечки памяти на этой функции, инструменты дают предупреждению, чтоПроблема с утечкой памяти NSKeyedUnarchiver
Категория Тип события Отметка Адрес Размер Ответственной библиотеки Ответственного Caller 27 SocialNetwork таНос 00: 19,951 0x3d64d20 80 Foundation - [NSKeyedUnarchiver _decodeArrayOfObjectsForKey:]
- (NSMutableArray *)GetDataInstanceToUserDefaults{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSData *storedObject = [userDefaults objectForKey:@"MyDataKey"];
NSMutableArray *data;
if(storedObject != nil)
{
NSArray *savedArray = [NSKeyedUnarchiver unarchiveObjectWithData:storedObject];
if(savedArray != nil)
data = [[NSMutableArray alloc] initWithArray:savedArray];
else
data = [[NSMutableArray alloc] init];
}else{
data = [[NSMutableArray alloc] init];
}
return data;
}
я не понял, где это моя проблема?
Спасибо за вашу поддержку
Edit: Кстати, я должен дать более подробную информацию об этой проблеме, эту функцию (как вы можете видеть) хранит мой объект. Мой объект - это пользовательский класс и хранится в NSMutableArray.
Я уже добавил эти методы внутри моего пользовательского класса
-(void)encodeWithCoder:(NSCoder *)coder{
-(id)copyWithZone:(NSZone*)zone {
-(id)initWithCoder:(NSCoder *)coder{
TechZen еще раз благодарен вам за быстрый ответ. Итак, что я должен сделать для решения моей проблемы? – fyasar
TechZen после того, как я увижу ваш ответ, который я исследовал в stackoverflow, Stefan von Chossy уже дал ответ, связанный с моей проблемой, если у кого-то такая же проблема, как и я, посмотрите здесь: http://stackoverflow.com/questions/537044/хранения, таможенно-объекты-в-ан-NSMutableArray-в-NSUserDefaults/751749 # 751749 в пользовательском классе вы должны использовать - (ID) initWithCoder: (NSCoder *) кодировщик { \t само = [супер INIT] ; вместо; - (id) initWithCoder: (кодер NSCoder *); { self = [[CustomObject alloc] init]; Еще раз спасибо – fyasar
@fyasar Пожалуйста, разместите свое решение как ответ, чтобы я мог его приветствовать. Переключение с 'self = [[MyObject alloc] init]' на 'self = [super init]' действительно разрешает утечку, сообщаемую профилированием в Инструментах. – Palimondo