что означает этот код в target-c? - PullRequest
1 голос
/ 17 января 2011
[CATransaction withAnimationSpeed:1.0 :^ {
            if(newMultiplier > 100)
                fillLayer.backgroundColor = ColRGBA(1, 1, 0, 0.2);
            else
                fillLayer.backgroundColor = ColRGBA(0, 0, 0, 0);
        }];

^ {} значит?зачем использовать этот символ.

1 Ответ

5 голосов
/ 17 января 2011

Это называется блок . Они похожи на анонимные функции в других языках в том смысле, что вы используете их для запуска блоков кода как часть какой-то другой подпрограммы (в вашем случае, анимации). Блоки полезны, когда вы не хотите создавать одноразовые методы в своем классе, просто чтобы передавать их селекторы в методы Objective-C, такие как performSelector:.

^ является символом для блока. Код в { } ведет себя так же, как код в блоке { } метода.

Некоторые блоки имеют параметры, указанные аналогично функциям C:

^(int a, int b) {
    NSLog(@"a + b = %d", a + b);
}

В данном коде ^ {} совпадает с ^(void) {}, т. Е. Блок не принимает никаких параметров.

...