SafeCast 1.1.1

SafeCast 1.1.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2015年1月

Fabian Canas维护。



SafeCast 1.1.1

  • 在Objective-C中使用对象强制类型转换,而不是在C中
  • 只有在它们属于某一类或符合特定协议时才枚举集合中的对象
  • 保持安全
  • 保持简洁

Objective-C是C,C是危险的。不要盲目地进行对象强制类型转换。坚持使用高级语言功能,并编写更易于阅读的代码。

这样做

NSMutableArray *mArray = [NSMutableArray safe_cast:array];
// `mArray` is nil if `array` is not a mutable array, or `array` if it is.

或者只为可以响应该选择器的集合成员调用方法。

[array safe_makeObjectsSafelyPerformSelector:@selector(method)];

或者在特定类型的对象上使用块进行枚举。

[array safe_enumerateObjectsOfKind:[MyObject class]
                        usingBlock:^(MyObject *obj, NSUInteger idx, BOOL *stop) {
                            [obj setNumber:@3];
                        }];

或者协议

[array safe_enumerateObjectsConformingToProtocol:@protocol(MyProtocol)
                                      usingBlock:^(id<MyProtocol> *obj, NSUInteger idx, BOOL *stop) {
                                          [obj setNumber:@3];
                                      }];

SafeCast具有很多这样的方法,涵盖了NSArrayNSSetNSDictionaryNSOrderedSet

我想给像NSMapTableNSHashTable这样的集合提供覆盖可能不是好主意,因此没有计划这么做。

一个为“那”而生的全部库?

首先,它非常小。头部的文档比代码大得多。并且经过测试。你可能不需要它。但许多事情都很有优势。

易于集成

SafeCast可以作为CocoaPod使用。

pod 'SafeCast'

表示意图简洁直接

它绝对需要的代码行更少。在我看来,它比安全地做的更冗长方式更容易阅读和思考。它将类型安全检查放在前端并保持在高级别。

保持安全

也许你知道自己在做什么。但你总是做正确的事情吗?你代码库中有多少人?他们所有人都多了解Objective-C的C基础?越来越多的开发者正在使用高级或动态语言,并且可能没有意识到什么是安全的,什么不是。

SafeCast想要让它更容易安全地进行强制类型转换...只在安全时进行强制类型转换。

状态

请发送反馈、pull-requests和咖啡。