从一些Swift类中排除Objective C类

时间:2016-11-29 16:20:20

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

在目标C中,只会使用类别"在一个类中,如果我导入它。因此,如果我有一个类别NSString+category,我必须在每个要使用它的类中#import NSString+category.h

我有这样的类别,我想要使用它的一些类是用Swift编写的。如果我将此类别暴露给Swift标头中的这个类别,那么所有swift类都将使用它。如何避免这种情况?

注意:我的类别实际上在UIViewController上,我放在那里的代码只能由SOME ViewControllers使用。在"其他"上使用此类别感觉错误且不必要。 ViewControllers。

1 个答案:

答案 0 :(得分:2)

您的基本假设不正确:

  

在目标C中,如果我导入类别,则只会在类中“使用”

如果编译了类别,则类中的方法会出现在类中。导入标题使方法名称可见;如果你尝试使用其中一个名称发送消息,编译器会给你一个警告。 (如果确定,可以使用performSelector:或运行时库调用方法。)

你的Swift类也是如此,并且由于Objective-C头文件被引入Swift的方式,我不相信有一种方法可以限制Swift代码中方法的可见性。