Проблема с памятью при кодировании NSDecimalNumber, как это? - PullRequest
0 голосов
/ 27 августа 2009

Я не уверен в этом:

// assume value is a NSDecimal type and exists
NSDecimalNumber *decNum = [[NSDecimalNumber alloc] initWithDecimal:value];
[encoder encodeObject:decNum forKey:@"someKey"];
[decNum release];

Я оборачиваю NSDecimal в объект NSDecimalNumber. Я должен выпустить это где-нибудь. Но я не уверен ... кодировщик сохраняет этот объект, или в некоторых ситуациях мой -релиз к объекту будет проблемой? Я считаю, что кодировщик на самом деле просто делает «снимок» обнаженных данных этого объекта и запоминает его, но опять же, не уверен. Может быть, кто-то может помочь прояснить ситуацию. Ищите в документах слова "release" и "retain", но они не упоминают об этом в контексте.

1 Ответ

0 голосов
/ 27 августа 2009

Поскольку вы сделали явное alloc, вы также несете ответственность за выполнение release. Кодировщик может использовать объект во время вызова функции, но если он хочет сохранить его за пределами этого, ему нужно либо retain скопировать его, либо скопировать его, но ваш код не должен знать, что именно он делает.

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