Swift相当于静态Objective-C表达式

时间:2015-03-12 13:50:49

标签: ios objective-c swift

以下表达式的Swift等价物是什么:

static CGRect MYScaleRect(CGRect rect, CGFloat scale)
{
    return CGRectMake(rect.origin.x * scale, rect.origin.y * scale, rect.size.width * scale, rect.size.height * scale);
}

3 个答案:

答案 0 :(得分:5)

您的代码是纯C;没有涉及Objective-C。而且,严格地说,它不是表达。

它是没有发出符号的函数的定义(这是static在此上下文中的作用)。因此该函数仅在当前编译单元(定义它的.c或.m文件)中可见。该功能与某些类无关。

语义Swift等价物是一个普通的快速函数,带有private访问修饰符。

答案 1 :(得分:2)

对于这种类型的函数(实用程序),我建议使用struct扩展,但有三种方法。

自由功能:(相当于问题中的功能)

private func MYScaleRect(rect: CGRect , scale: CGFloat ) -> CGRect {
    return CGRectMake(rect.origin.x * scale, rect.origin.y * scale, rect.size.width * scale, rect.size.height * scale)
}

结构扩展:

private extension CGRect {
    static func MYScaleRect(rect: CGRect , scale: CGFloat ) -> CGRect {
        return CGRectMake(rect.origin.x * scale, rect.origin.y * scale, rect.size.width * scale, rect.size.height * scale)
    }
}

班级方法:

private class func MYScaleRect(rect: CGRect , scale: CGFloat ) -> CGRect {
    return CGRectMake(rect.origin.x * scale, rect.origin.y * scale, rect.size.width * scale, rect.size.height * scale)
}

对于这种类型的功能(实用程序),我建议使用扩展名。

答案 2 :(得分:0)

如果您的方法属于某个类,则在Swiftyou中可以使用type method

class func MYScaleRect(rect: CGRect , scale: CGFloat )-> CGRect {}
  

如上所述,实例方法是被调用的方法   特定类型的实例。您还可以定义方法   呼唤类型本身。这些方法称为类型   方法。您可以通过编写关键字来指定类的类型方法   方法的func关键字之前的类,并为其键入方法   通过在关键字之前写入关键字static来构造和枚举   method的func关键字。