Я использую MacRuby для программирования Core Animation. Я перепробовал все, что мог придумать, и искал повсюду (и, возможно, это невозможно сделать в «чистом» макрубине), но я не могу понять, как указать блок кода MacRuby в качестве вызываемого блока завершения. когда транзакция анимации завершена. Я знаю, что есть другие способы делать то, что я хочу, но это кажется самым чистым для меня и того, как все движется в Какао. Во всяком случае, вот что у меня есть:
CATransaction.begin # start the transaction
#
# ...set up animation (works fine!)
#
CATransaction.setCompletionBlock(...) <---- Here's the problem
CATransaction.commit # end the transaction
Без строки setCompletionBlock анимация работает нормально. Параметр этого метода установки определяется (в Objective-C) как:
void (^)(void))block
И описывается как:
«блочный объект, вызываемый, когда анимация для этой группы транзакций> завершена. Блочный объект не принимает никаких параметров и не возвращает никакого значения».
Я пробовал разные вещи (но пока только догадываюсь):
CATransaction.setCompletionBlock({ some code })
CATransaction.setCompletionBlock(Proc.new { some code })
CATransaction.setCompletionBlock(lambda { some code })
CATransaction.setCompletionBlock(method(:aMethod))
...
def aMethod
...
end
Я далеко? Должен ли я делать какую-то оболочку Objective-C для этого? Или это невозможно?
заранее спасибо