这个小型库会在处理类型转换时使您的代码更安全、更易于阅读。对于 Swift 来说,不需要这种库,因为 Swift 默认就要求您编写安全且易于阅读的类型转换代码。
这样,您不必像以下这样做
if ([self.collection isKindOfClass:[NSArray class]]) {
NSArray *array = (NSArray *)self.collection;
/// ... some other code
此库允许您执行以下操作
NSArray *array = [NSArray rhb_dynamicCast:self.collection];
if (array) {
/// ... some other code
请注意,使用标准方法时,"self.collection" 实际上是重复代码,如果它即时创建,可能会影响性能。
方法 rhb_dynamicCast:
内部使用 isKindOfClass:
。还有一个名为 rhb_strictDynamicCast:
的方法,它内部使用 isMemberOfClass:
。
要开发过程中的附加安全检查(断言),则应使用以下方法
NSArray *array = [NSArray rhb_verifyCast:self.collection];
而不是标准方式
NSArray *array = (NSArray *)self.collection;
第一种方式将在调试模式下进行断言并检查类型转换是否有效,以防止开发过程中的错误。两种方式在发布模式下会产生相同的效果。
RHBCastingObjC 可通过 CocoaPods 获得。要安装它,请简单地在您的 Podfile 中添加以下行:
pod "RHBCastingObjC"
Lazar Otasevic, [email protected]
RHBCastingObjC 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。