2011-01-27 3 views
2

Во-первых, самый простой случай:В каких ситуациях я должен сохранить объект?

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

Есть ли другие случаи, когда я хотел бы сохранить объект, кроме того, в сеттере для сохранения свойства?

ответ

2

Другой пример: если вам нужно работать с объектом после его удаления из коллекции. Коллекции сохраняют свои объекты и поэтому должны отправлять сообщение -release объектам при их удалении. Поэтому, если вы удаляете объект из коллекции и пытаетесь ее использовать, нет никакой гарантии, что он уже не был освобожден.

В таком случае вам нужно будет отправить -retain на объект, пока он все еще находится в коллекции, чтобы гарантировать, что он все равно будет действителен после его удаления.

1

Чтобы быть универсальным, вы сохраняете объект, если вам это нужно в другом месте.

+0

И когда вы не выделили его в первую очередь. – user210504

+0

Это слишком общее для хорошего ответа на вопрос;) –

2

Когда вы создаете объект, используя метод init или copy, объект приходит к вам с сохранением количества 1, поэтому вам не нужно их сохранять, но вам нужно их освободить.

Если вы храните его в коллекции NSArray или NSDictionary, коллекция сохранит ее и отпустит, когда она удалит объект. Тем не менее, вы все еще являетесь владельцем объекта, и вам также нужно будет его освободить. Разумно отпустить его после его хранения.

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

Смежные вопросы