Измените вашу первую строку на [[[Someobject alloc] init] autorelease]
и все готово.
Блоки сохраняют объекты, объявленные без ссылки на тело, и освобождают их при освобождении. Так будет копия блока, сделанная в пределах DoSomethingWith
. Если предположить, что копия в конечном итоге будет выпущена, утечки нет. Это довольно круто.
(Исключение: если Object
было объявлено __block Someobject *Object
, наряду с ожидаемым эффектом (удаляя const из частной ссылки блока, позволяя блоку присвоить Object
), это поведение автоматического сохранения также переключается выкл. В этом случае удержание / освобождение является вашей ответственностью снова.)