ios - Swift 等效于 Objective-C 表达式?

标签 ios objective-c swift

以下表达式在 Swift 中的含义是什么:

 [wordmarkFrameAnimation addKeyFrames:@[
     ({
         IFTTTAnimationKeyFrame *keyFrame = [IFTTTAnimationKeyFrame keyFrameWithTime:timeForPage(1) andFrame:CGRectOffset(self.wordmark.frame, 200, 0)];
         keyFrame.easingFunction = IFTTTEasingFunctionEaseInQuart;
         keyFrame;
     }),
 ]];

我知道外面的部分是一个数组 (@[...]) 但以 ({ 开头并以 } 结尾的部分是什么) 是什么意思?

最佳答案

与 Swift 不同,Objective-C - 因为它是 C - 可以使用简单的大括号在任何地方创建局部作用域。此外,通过 GCC extension to the C language , 当花括号本身被圆括号括起来时,这个作用域可用于生成一个值——即花括号中的最后一个表达式。因此,这是一种内联定义、配置和返回 keyFrame 的方法。

因此,要理解 Swift 术语中的含义,请将其大致等同于此类事物,这实际上是一种相当常见的 Swift 习语(我称之为 define-and-call ):

let arr : [UIView] = [
    {
        let v = UIView(frame:CGRectMake(0,0,100,100))
        v.opaque = true
        v.backgroundColor = UIColor.redColor()
        return v
    }()
]

关于ios - Swift 等效于 Objective-C 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30580161/

相关文章:

ios - RSA/ECB/PKCS1Padding iOS加密

ios - 如何将手势切换回上一个 View ios?

ios - NSRangeException,但是在哪里呢?

objective-c - 通过代码添加和设置 NSLayoutConstraint

ios - 如何使用 SectionHeaderTitle 在 TableView 中设置数组?

ios - 动画 CALayer

ios - 如何使用 PHCachingImageManager().stopCachingImages

ios - 设置 UIImageView contentMode 显示无效

ios - 数组中的零对象使程序崩溃,同样在一定计数之后

ios - Swift 4.2 无法将类型 '(UIImagePickerController.InfoKey).Type' 的值转换为预期的参数类型 'UIImagePickerController.InfoKey'