Я знаю, что если я получу объект, например NSArray, с таким методом, как [NSArray array]
, он будет автореализован. Поэтому я не должен сам делать release
. Мой вопрос в том, должен ли я сохранить его после того, как получится так? Я бы так и не подумал, так как счет начинается с 1, и он не будет выпущен до тех пор, пока пул не будет выпущен, но я получил несколько ошибок доступа к этим объектам, когда я этого не сделаю. Поэтому, чтобы исправить их, я сохраняю эти объекты, а потом освобождаю их позже. Что происходит в этом случае? Неужели я все еще не понимаю целевое управление памятью?Objective-C static "constructors" - мне нужно сохранить?
ответ
Я сердечно советую вам перестать думать о количестве накоплений. Вместо этого подумайте о собственности: хотите ли вы претендовать на кусок собственности на экземпляр (т. Е. Вы хотите убедиться, что он остается вокруг, пока вы не скажете иначе)? Если да, то -retain
это. В противном случае, не -retain
это. В любое время, когда вы сохраняете права собственности на экземпляр, вы должны -release
, которые заинтересованы в будущем, или экземпляр никогда не будет освобожден.
Вы можете предположить, что любой метод, который не соответствует шаблону alloc/new/copy, возвращает экземпляры, в которых у вас не имеют право собственности. Если вы хотите, чтобы они придерживались рамки текущего стека, сохраните их.
Для этого и всех других вопросов памяти Objective-C читайте Memory Management Programming Guide. Затем перечитайте его. Еще раз. Это авторитетная ссылка на эту тему. Это будет ваш друг.
Автореализованный объект будет иметь счет сохранения, уменьшенный в конце цикла цикла. Поэтому, если у вас есть объект, который вы хотите сохранить дольше, чем конец цикла цикла, да, вы должны его сохранить.
Вы не сохраняете, если вам не требуется заявить права собственности на объект. Вам нужно опубликовать какой-либо код или описать, что вы делаете, прежде чем кто-либо сможет помочь вам определить, как и почему вы получаете ошибки.
- 1. Static Imports and Constructors
- 2. Objective C static vs. dynamic constructors
- 3. 'static: std :: marker :: Sized` не удовлетворен - мне нужно вставить?
- 4. Что мне нужно вернуть для public static int?
- 5. ObjectiveC: Нужно ли предлагать мой метод защиты?
- 6. iOS: Основные данные - мне нужно сохранить изменения?
- 7. Мне нужно сохранить секретный токен доступа
- 8. Мне нужно сохранить PipelinedRDD в файл hadoop
- 9. Какой атрибут мне нужно сохранить для RoamingSettings?
- 10. Мне нужно остановить перенаправление, но сохранить правило
- 11. Мне нужно сохранить видео перед загрузкой
- 12. Java Constructors
- 13. Chaining Constructors
- 14. C++ private constructors
- 15. Mocking constructors in Ruby
- 16. Generics and Parameterized Constructors
- 17. Нужно ли мне WaitCallback?
- 18. java generic constructors
- 19. Java (toString and Constructors)
- 20. Зачем мне это нужно?
- 21. ByteBuffer.allocate in Constructors
- 22. java multiple constructors
- 23. Ошибка Java - Inheritance & Constructors
- 24. Copy Constructors ... A Quandary
- 25. C++ Inheritance and Constructors
- 26. DDD + Public Constructors Constructors - должны ли они существовать?
- 27. программирование в C++ любит objectivec
- 28. Нужно ли мне bindParam?
- 29. Мне действительно нужно libgcc?
- 30. Java Generic Methods and constructors
Как побочное примечание, то, что вы называете «статическими» конструкторами, часто называют фабричными методами в земле Objective-C. –