Swift:如何从Objective-C调用类或类方法

时间:2014-08-01 21:45:28

标签: ios objective-c swift objective-c-category

我在UIImage上有一个用Objective-C编写的类别。以下是一些示例方法。如何在Swift中调用这些方法?

+(UIImage *) imageOrPDFNamed:(NSString *)resourceName; 
+(UIImage *) imageWithPDFNamed:(NSString *)resourceName;

我尝试过以下操作但它无法识别方法:

let image = UIImage(imageOrPDFNamed:"test.pdf")
let image = UIImage(PDFNamed:"test.pdf")

2 个答案:

答案 0 :(得分:13)

类别函数和调用约定有各种各样的情况。

1)在swift类中,如果类别中的函数返回与它们相同的类型

,则可以将其导入为convenience initializes
 +(UIImage *) imageOrPDFNamed:(NSString *)resourceName ;

所以它可以被称为

    UIImage(orPDFNamed: "abc")

2)但是,如果类别中的类函数没有返回它在这种情况下调用的相同对象类型(UIImageUIImage,如

   +(int) imageOrPDFNamedInt:(NSString *)resourceName ;

它将被称为

    UIImage.imageOrPDFNamedInt("abc")

3)如果categories函数不是类函数,那么它将直接调用UIImage的实例,如

   -(UIImage *) imagePDFNamed:(NSString *)resourceName ;

称为

    UIImage().imagePDFNamed("abc")

答案 1 :(得分:1)

这最终起作用了:

let image = UIImage(orPDFNamed:"test.pdf")