движущиеся объекты в nsmutablearray - PullRequest
0 голосов
/ 08 ноября 2010

У меня есть NSMutableArray;

NSMutableArray
--NSMutableArray
----NSDictionary
----NSDictionary
----NSDictionary
--NSMutableArray
----NSDictionary
----NSDictionary
----NSDictionary

Я хочу переместить первый NSDictionary во второй NSMutableArray. вот код:

id tempObject = [[tableData objectAtIndex:fromSection] objectAtIndex:indexOriginal];
[[tableData objectAtIndex:fromSection] removeObjectAtIndex:indexOriginal];
[[tableData objectAtIndex:toSection] insertObject:tempObject atIndex:indexNew];

удаляет объект, но не может вставить объект в новую позицию. ошибка:

[CFDictionary retain]: message sent to deallocated instance 0x4c45110

в заголовочном файле:

NSMutableArray *tableData;
@property (nonatomic, retain) NSMutableArray *tableData;

как я могу изменить порядок / переместить объекты в nsmutablearray?

1 Ответ

5 голосов
/ 08 ноября 2010

Когда объект удаляется из изменяемого массива, ему отправляется сообщение release. Таким образом, если ничто иное не содержит ссылок на него, объект будет освобожден.

Так что вы можете просто изменить порядок утверждений:

[[tableData objectAtIndex:toSection] insertObject:tempObject atIndex:indexNew];
[[tableData objectAtIndex:fromSection] removeObjectAtIndex:indexOriginal];

... или явно поддерживать объект в живых:

[tempObject retain];
[[tableData objectAtIndex:fromSection] removeObjectAtIndex:indexOriginal];
[[tableData objectAtIndex:toSection] insertObject:tempObject atIndex:indexNew];
[tempObject release];

Прочитайте Основы массивов и Изменяемые массивы для получения более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...