Objective c 目标C:变量声明后的花括号

Objective c 目标C:变量声明后的花括号,objective-c,variables,curly-braces,Objective C,Variables,Curly Braces,我正试图更好地理解Objective-C/Swift的良好实践,我目前正在阅读这篇文章:,来自GitHub令人敬畏的iOS回购。我不懂这两段代码 一,/ 我得到了块部分,即: ^(CALayer *obj, CGFloat values[]) { POPCGColorGetRGBAComponents(obj.backgroundColor, values); } 我不明白的是后面的两个花括号 static POPStaticAnimatablePropertyState

我正试图更好地理解Objective-C/Swift的良好实践,我目前正在阅读这篇文章:,来自GitHub令人敬畏的iOS回购。我不懂这两段代码

一,/

我得到了块部分,即:

 ^(CALayer *obj, CGFloat values[]) {
      POPCGColorGetRGBAComponents(obj.backgroundColor, values);
    }
我不明白的是后面的两个花括号

static POPStaticAnimatablePropertyState _staticStates[] =
它应该是什么

2/类似但不完全相同的代码:

static NSUInteger staticIndexWithName(NSString *aName)
{
  NSUInteger idx = 0;

  while (idx < POP_ARRAY_COUNT(_staticStates)) {
    if ([_staticStates[idx].name isEqualToString:aName])
      return idx;
    idx++;
  }

  return NSNotFound;
}
static nsuiger staticIndexWithName(NSString*aName)
{
整数idx=0;
while(idx

它似乎是一个变量声明后的代码块。它应该在每次使用变量时执行吗?

第一个是静态地声明
POPStaticAnimatablePropertyState
的数组。似乎
POPStaticAnimatablePropertyState
是一个
struct
本身(可能通过
typedef
),它有一个数字、一个块、另一个块和另一个数字

第二个只是一个静态C函数,没有什么特别的


本规范不是良好的Objective-C/Swift实践。它只是一个普通的C,可能是为了便于移植或以这种方式编写,以实现纯粹的性能。

是的,它确实是一个结构,我被结构本身之前的第一个大括号甩了,但我猜他是用它来创建数组的。
static NSUInteger staticIndexWithName(NSString *aName)
{
  NSUInteger idx = 0;

  while (idx < POP_ARRAY_COUNT(_staticStates)) {
    if ([_staticStates[idx].name isEqualToString:aName])
      return idx;
    idx++;
  }

  return NSNotFound;
}