1
後,我試圖更好地瞭解良好的Objective-C /斯威夫特的做法,和我目前正在讀這一點:https://github.com/facebook/pop/blob/master/pop/POPAnimatableProperty.mm,在GitHub上的真棒-IOS回購。我不明白這兩位代碼。的Objective-C:大括號變量聲明
1/
static POPStaticAnimatablePropertyState _staticStates[] =
{
/* CALayer */
{kPOPLayerBackgroundColor,
^(CALayer *obj, CGFloat values[]) {
POPCGColorGetRGBAComponents(obj.backgroundColor, values);
},
^(CALayer *obj, const CGFloat values[]) {
CGColorRef color = POPCGColorRGBACreate(values);
[obj setBackgroundColor:color];
CGColorRelease(color);
},
kPOPThresholdColor
},
{kPOPLayerBounds,
^(CALayer *obj, CGFloat values[]) {
values_from_rect(values, [obj bounds]);
},
^(CALayer *obj, const CGFloat values[]) {
[obj setBounds:values_to_rect(values)];
},
kPOPThresholdPoint
},
...
}
我得到的塊部分,即:
^(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;
}
這似乎是一個代碼變量聲明之後的塊。它應該在每次使用變量時執行?
是的,這的確是一個結構,我是由結構本身之前的第一大括號揭去,但我猜他用它來創建陣列。 –