Во-первых, вам нужен init, как hwaxxer и Justin Boo.
Во-вторых, несколько человек предложили использовать autorelease
. autorelease
является отложенным release
, и вы, как правило, не должны этого делать, если вам не нужно (например, ваш метод должен отложить выпуск до тех пор, пока он не сможет вернуть объект своему вызывающему абоненту). Короче говоря, используйте только autorelease
, когда вы возвращаете объект вызывающему, и в противном случае используйте release
. В этом случае вы должны использовать release
.
В этом конкретном случае это не имеет значения (потому что, нажав контроллер вида, он все равно сохраняется и не будет выпущен до тех пор, пока этот вид не выскочит со стека), но если вы собираетесь делать (т. е. не использовать ARC), стоит использовать хорошую практику, а именно release
всякий раз, когда вы можете (например, в этом случае), и только autorelease
, когда вы возвращаете объект вызывающему абоненту метода и поэтому должны отложить release
.
В-третьих, я предлагаю прочитать и убедиться, что вы понимаете Advanced Memory Management. Это дает вам некоторые основные правила управления памятью, которые вам действительно нужно понять (например, если вы их создаете, тогда вы владеете им, и вы должны его отпустить).
В-четвертых, как только вы овладеете навыками управления памятью (и только после того, как вы это сделаете, так как полезно понять, что происходит), я бы предложил серьезно рассмотреть Transitioning to ARC, потому что вам не нужно много разбираться этой глупости.
Вы не знаете, что делаете. Найдите хорошую ссылку на управление кучей iOS и изучите ее. –
Некоторые из них описаны в [Расширенное управление памятью] (https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/MemoryMgmt.html). – Rob