2012-01-25 5 views

ответ

2

Пару возможных причин прийти на ум:

  • Apple, имел в виду, чтобы преобразовать этот образец в АРК, и забыл о пропущенных или позже autorelease вызова в том же фрагменте кода.
  • Ивар, который получает session в конце метода init, объявлен @property (assign), и поэтому они намеренно хотели сохранить его на время. Если я правильно помню, это плохая практика - они должны иметь autorelease d сеанс и объявили @property (retain).
  • Они передают releasesession позже. Не строго неудовлетворительная практика, но, конечно, запутанная и трудная для чтения, и может привести к ошибке в обслуживании позже (когда кто-то теряет след баланса retain - release).
  • Это действительно ошибка. Хороший улов!

В любом случае, вы правы в том, что это несколько противоречит хорошей практике управления памятью. Трудно сказать наверняка, однако, есть ли окончательная причина, по которой он не выпущен.