面向尼特的 Objective-C 用断言宏集.
您可以使用 CocoaPods。
添加 NeetHouse Spec 仓库。
# Run on the your shell
pod repo add neethouse https://github.com/neethouse/Specs
将其附加到您的 Podfile 中。
pod 'NeetAssertionKit'
然后进行安装。
pod install
表明条件式为 true。
在发布构建中被移除,指定的条件式也不会被执行。
// 条件式が false の時にエラーを出す.
- (void)getObjectAtIndex:(NSUInteger)index inArray:(NSArray *)array {
// index が NSNotFound の時エラー
NSAssertTrue(index != NSNotFound, @"index は NSNotFound 以外 (index=%u)", index);
...
}
// C の関数内で使う時は NAKWrap で囲む.
// 他のマクロを使う場合も同様に NAKWrap で囲む.
id getObjectInArray(NSUInteger index, NSArray *array) {
// index が NSNotFound の時エラー
NSAssertTrue(index != NSNotFound, @"index は NSNotFound 以外 (index=%u)", index);
...
}
表明条件式为 false。
在发布构建中被移除,指定的条件式也不会被执行。
无条件产生断言错误。
在发布构建中被移除。
switch (type) {
case ValidType:
...
break;
default:
NAKFail(@"ここを通るのはおかしい!");
}
包围断言宏(如 NAKAssertTrue)的宏。
在 C 函数内不能直接使用 NAKAssertTrue 等,可以使用此宏来包围使用。
在发布构建中,expression 会被替换。
// NAKWrap で囲うと C の関数でも使用できる
void setHomuhomu(NSString *homuhomu) {
NAKWrap(NAKAssertTrue(0 < homuhomu.length, @"ほむほむは空じゃだめ");
...
}
表明 expression 不是 nil。
在发布构建中被移除,指定的表达式也不会被执行。
- (void)setHomuhomu:(NSString *)homuhomu {
// homuhomu が nil の時エラー
NAKAssertNotNil(homuhomu, @"ほむほむは nil 以外");
...
}
表明 expression 是 nil。
在发布构建中被移除,指定的表达式也不会被执行。
表明对象是指定类或其子类的一个实例。
在发布构建中被移除。
id obj = ...;
// obj が NSArray か, そのサブクラスのインスタンスであることを表明
NAKAssertKindOfClass(obj, NSArray, @"obj は NSArray かサブクラス");
表明对象是指定类的实例。
即使是子类实例,也会报错。
在发布构建中被移除。
NSOperation *ope = ...;
// ope が NSOperation 以外の時エラー (サブクラスでもエラー)
NAKAssertMemberOfClass(ope, NSOperation, @"ope は NSOperation そのもの (サブクラスもだめ)");
NSOperation *ope = [NSBlockOperation blockOperationWithBlock:^{ ... }];
// NSOperation のサブクラスだからエラーが起きる
NAKAssertMemberOfClass(ope, NSOperation, @"ope は NSOperation そのもの (サブクラスもだめ)");
获取 expression 的结果并尝试将其转换为 clazz。
如果 expression 不是 nil 且 clazz 不是它的子类,则会发生错误。如果 expression 为 nil,则不报错。
在发布构建中,会将 expression 的结果简单地转换为 clazz 并返回。
- (void)receivedNotify:(NSNotification *)note {
// note.userInfo[@"stringValueKey"] が NSString (またはそのサブクラス) でない時エラー
// NSString または nil の場合は string に代入される.
NSString *string = NAKAssertCast(note.userInfo[@"stringValueKey"], NSString);
...
}
表明 NSArray 中的所有元素都是指定类或其子类的一个实例。
在发布构建中被移除。
- (void)setStringArray:(NSArray *)array {
// array に NSString (またはそのサブクラス) 以外のオブジェクトが入っているとエラー
NAKAssertArrayType(array, NSString, @"文字列の配列を指定する");
...
}
表明正在运行的线程是主线程。
在发布构建中被移除。
- (void)beginHomuhomuAnimation {
// メインスレッド以外から呼ばれるとエラー
NAKAssertMainThread(@"UI をいじるのでメインスレッドから呼ぶこと!");
...
}
表明正在执行的调度队列是指定的队列。
在发布构建中被移除。
dispatch_queue_t _queue;
- (void)nonThreadSafeMethod {
// 現在のキューが _queue 以外だとエラー
NAKAssertDispatchQueue(_queue, @"変なキューで実行されてる!");
...
}