从某些 Swift 类 中排除 Objective C 类别
Exclude Objective C Category from some Swift classes
在 objective C 中,如果我导入一个类别,它只会在 class 中 "be used"。因此,如果我有一个类别 NSString+category
,我必须 #import NSString+category.h
在每个 class 我想使用它。
我有这么一个Category,class里面有一些我想用到的Swift里面写的。如果我通过将此类别放在桥接 header 中将其公开给 Swift,所有 swift classes 将使用它。如何避免这种情况?
注意:我的类别实际上在 UIViewController
上,我放在那里的代码只能由某些 ViewControllers 使用。在 "other" ViewControllers 上使用这个类别感觉是错误和不必要的。
您的基本假设不正确:
In objective C, a Category will only "be used" in a class if I import it
如果类别已编译,则类别中的方法会出现在 class 上。导入 header 使方法名称可见;否则,如果您尝试使用这些名称之一发送消息,编译器将给您警告。 (如果您确定,可以使用 performSelector:
或运行时库调用这些方法。)
您的 Swift class 也是如此,并且由于 Objective-C header 被引入 Swift 的方式,我不不相信有一种方法可以限制方法在 Swift 代码中的可见性。
在 objective C 中,如果我导入一个类别,它只会在 class 中 "be used"。因此,如果我有一个类别 NSString+category
,我必须 #import NSString+category.h
在每个 class 我想使用它。
我有这么一个Category,class里面有一些我想用到的Swift里面写的。如果我通过将此类别放在桥接 header 中将其公开给 Swift,所有 swift classes 将使用它。如何避免这种情况?
注意:我的类别实际上在 UIViewController
上,我放在那里的代码只能由某些 ViewControllers 使用。在 "other" ViewControllers 上使用这个类别感觉是错误和不必要的。
您的基本假设不正确:
In objective C, a Category will only "be used" in a class if I import it
如果类别已编译,则类别中的方法会出现在 class 上。导入 header 使方法名称可见;否则,如果您尝试使用这些名称之一发送消息,编译器将给您警告。 (如果您确定,可以使用 performSelector:
或运行时库调用这些方法。)
您的 Swift class 也是如此,并且由于 Objective-C header 被引入 Swift 的方式,我不不相信有一种方法可以限制方法在 Swift 代码中的可见性。