2015-02-26 5 views
0

заранее. Всякий раз, когда я вызываю [PFObject saveAll] или [PFObject saveAllInBackground], память, выделенная для этого процесса, не может освободиться после завершения задачи. В результате, если этот метод нужно было называть повторно, приложение может потерпеть крах из-за нехватки доступной памяти. Я тестирую это на iPhone 5 с iOS 8.1.3 и используя Xcode 6.2, а также ARC. Я также использую новейший Parse SDK для iOS, хотя эта проблема сохраняется и в старых SDK.Parse.com iOS [PFObject saveAll]/[PFObject saveAllInBackground] Выделение памяти Выпуск

EDIT

Я представил отчет об ошибке Разобрать несколько недель назад. Они назначены люди, чтобы исследовать его: https://developers.facebook.com/bugs/349439421926879/

Исходный код для ошибки: https://github.com/EpsApps/Parse-PFObject-saveAll-Memory-Bug

Доказательства того, что ошибка существует: https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-xpa1/t39.2087-6/10935993_1605305476371209_1781513233_n.png

+1

Пожалуйста почтовый код и доказательства того, что память действительно протекает. – danh

+0

Вы используете 'PFRelation' где угодно? – random

+0

@random Нет, я не использую PFRelation нигде. –

ответ

0

Я понял, обходной путь к этой ошибке. При добавлении объекта в качестве указателя делайте простой запрос для этого объекта, а не повторно используете тот же объект, который был вытащен через более сложный запрос.

Например, это приведет к большой утечке памяти, когда в том числе «bigObject» в качестве указателя для большой сохранить все:

PFQuery* query = [PFQuery queryWithClassName:@"Object"]; 
[query whereKey:@"objectId" equalTo:object.objectId]; 

// Don't include an array of pointers like this 
[query includeKey:@"objectArray1"]; 
[query includeKey:@"objectArray2"]; 

PFObject* bigObject = [query getFirstObject]; 

Но это не будет:

PFQuery* query = [PFQuery queryWithClassName:@"Object"]; 
[query whereKey:@"objectId" equalTo:object.objectId]; 

PFObject* smallObject = [query getFirstObject]; 
0

Хотя это были разные для меня каждый бег, иногда объем памяти делает полностью уйти. Посмотрите следующий рисунок.

В большинстве случаев, похоже, что-то вроде остаточного, хотя, согласен.

http://derrrick.com/stackoverflow/parse_memory.png

+0

Интересно. Сколько объектов вы сохраняете за раз? Я заметил, что если вы сохраняете меньше объектов одновременно, например, до 10, то осталось почти ничего. Когда я начинаю сохранять 25+, становится действительно очевидным, что существует много использованной памяти, которая не освобождается. –

+0

Кроме того, если я сохраняю объект с большим количеством ** новых ** указателей на другие объекты, возникает одна и та же проблема. –

+0

, если это будет огромной проблемой в производстве для вас, то я рекомендую вам обратиться к людям в Parse –