На самом деле, это почти правильно. alloc
, new
и copy
дают вам право собственности на возвращенный объект. Это классовые методы. Другие методы класса должны возвращать автоматически освобожденный объект. Методы экземпляра также должны возвращать автоматически освобожденный объект.
init
не влияет на владение и должен использоваться вместе с alloc
следующим образом.
[[SomeCoolClass alloc] init]
new
обычно является тем же самым, что и выше, и иногда описывается как «почти устаревший», потому что это возврат к следующим дням, когда распределение и инициализация были выполнены на одном шаге и не могут быть построены отдельно. мы делаем сегодня с alloc
и init
.
Релиз не влияет на владение, но должен использоваться только для объекта, которым вы уже владеете. В противном случае возможен сбой.
Сохранение также не влияет на владение, но должно использоваться только для объекта, которым вы уже владеете. В противном случае объект не может быть освобожден, когда он должен быть. Результатом может быть сбой, но это может быть очень и очень странное поведение, которое трудно устранить, поскольку сообщения могут отправляться исходному объекту, который, как предполагалось, был освобожден, вместо нового объекта, на который указывает тот же адрес.