Ответ 1
Позвольте сломать его:
[Ball alloc]
: Это создает объект Ball, который у нас есть (и, следовательно, его нужно отменить).
[[Ball alloc] init]
: Это инициализирует объект Ball, который мы только что создали.
[[[Ball alloc] init] autorelease]
: это добавляет Ball в текущий пул автозапуска, поэтому он будет выпущен, когда этот пул будет удален. Это правильно, если, например, мы собирались вернуть Ball из метода.
[[[[Ball alloc] init] autorelease] autorelease]
: Это снова очищает объект Ball. Это 100% неправильно. alloc
- это единственное требование собственности, которое нам нужно сбалансировать, поэтому Ball теперь будет выпущен слишком много раз. Это может проявляться любым количеством способов, но, скорее всего, это просто сбой.