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