从某些Swift类中排除目标C类别



在目标c中,如果我导入,则仅在类中"使用"类别。因此,如果我有一个类别NSString+category,我必须在每个类中使用#import NSString+category.h

我有这样的类别,我想使用的一些类是用迅速写的。如果我通过将其放入桥接标头中将此类别暴露于Swift,则所有Swift类都将使用它。如何避免?

注意:我的类别实际上是在UIViewController上,而我在此放置的代码仅必须由某些ViewControllers使用。在"其他" viewControllers上使用此类别是错误的,并且不确定。

您的基本假设不正确:

在目标C中,如果我导入,则仅在类中"使用"类别

如果汇编了类别,则类别中的方法存在于类中。导入标题使方法名称可见;没有该编译器,如果您尝试使用其中一个名称发送消息,则编译器将为您提供警告。(如果确定,您可以使用performSelector:或运行时库调用方法。)

您的Swift类也是如此,并且由于Objective-C标头的Swift方式,我认为没有一种方法可以限制方法在Swift代码中的可见性。

最新更新