Как знать, автовыпущен ли объект или нет?

INSERT FOOFruits (FooID, FruitID)
SELECT 5, ID 
FROM   Fruits 
WHERE  name IN ('Apple', 'Orange');
17
задан Abizern 23 September 2009 в 15:23
поделиться

2 ответа

В принципе, если вы init , ] скопировать или сохранить объект, за который вы несете ответственность. Если вы этого не сделаете, вы не несете ответственности за его публикацию.

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/MemoryMgmt.html

Многие классы предоставить методы form + className ... который можно использовать для получить новый экземпляр класса. Часто упоминается как «удобство конструкторы », эти методы создают новый экземпляр класса, инициализировать его и верните для использования. Хотя вы можете подумать, что вы отвечает за выпуск объектов созданный таким образом, это не дело по собственности политика, изложенная ранее. Поскольку класс создает новый объект, это отвечает за утилизацию нового объект.

21
ответ дан 30 November 2019 в 13:13
поделиться

Об этом говорит сама сигнатура метода. Шаблон для методов с сигнатурами типа «classNameWithData: data1: data2» должен возвращать экземпляр этого объекта alloc / init / autorelease. Они там удобства, так что вам не нужно этого делать.

Если вы не хотите автоматически выпускать версию чего-либо, не создавайте их таким образом, используйте правильный alloc / init и отпустите, когда закончите. Этот метод более явный,

4
ответ дан 30 November 2019 в 13:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: