这段代码在objective-c中是啥意思?

Posted

技术标签:

【中文标题】这段代码在objective-c中是啥意思?【英文标题】:what does this code mean in objective-c?这段代码在objective-c中是什么意思? 【发布时间】:2011-01-17 11:05:54 【问题描述】:
[CATransaction withAnimationSpeed:1.0 :^ 
            if(newMultiplier > 100)
                fillLayer.backgroundColor = ColRGBA(1, 1, 0, 0.2);
            else
                fillLayer.backgroundColor = ColRGBA(0, 0, 0, 0);
        ];

^是什么意思?为什么要使用这个符号。

【问题讨论】:

【参考方案1】:

这称为block。它们类似于其他语言中的匿名函数,因为您使用它们来运行代码块作为其他例程(在您的情况下为动画)的一部分。当您不想在类中创建一次性方法时,块很有用,这样您就可以将它们的选择器传递给诸如 performSelector: 这样的 Objective-C 方法。

^ 是块的符号。 中的代码的行为就像方法的 块中的代码一样。

有些块有参数,指定类似于 C 函数:

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

在您给定的代码中,^ ^(void) 相同,即该块不带任何参数。

【讨论】:

以上是关于这段代码在objective-c中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

Vuejs,':'和'@'在vuejs中是啥意思?

(*var)[n] 在 C++ 中是啥意思

“?”是啥意思?在 Erlang 中是啥意思? [复制]

以下代码中的 zip(*res) 在 python 中是啥意思? [复制]

=+ 在 C 中是啥意思?

“let () =”在 Ocaml 中是啥意思?