NeetAssertionKit 1.1.0

NeetAssertionKit 1.1.0

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

mironal 维护。



  • covelline, LLC.

面向尼特的 Objective-C 用断言宏集.

如何安装

您可以使用 CocoaPods。

添加 NeetHouse Spec 仓库。

# Run on the your shell
pod repo add neethouse https://github.com/neethouse/Specs

将其附加到您的 Podfile 中。

pod 'NeetAssertionKit'

然后进行安装。

pod install

断言宏

NAKAssertTrue(condition, fmt, ...)

表明条件式为 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);

    ...
}

NAKAssertFalse(condition, fmt, ...)

表明条件式为 false。

在发布构建中被移除,指定的条件式也不会被执行。

NAKFail(fmt, ...)

无条件产生断言错误。

在发布构建中被移除。

switch (type) {
   case ValidType:
       ...
       break;

   default:
       NAKFail(@"ここを通るのはおかしい!");
}

NAKWrap(expression)

包围断言宏(如 NAKAssertTrue)的宏。

在 C 函数内不能直接使用 NAKAssertTrue 等,可以使用此宏来包围使用。

在发布构建中,expression 会被替换。

// NAKWrap で囲うと C の関数でも使用できる
void setHomuhomu(NSString *homuhomu) {

   NAKWrap(NAKAssertTrue(0 < homuhomu.length, @"ほむほむは空じゃだめ");

   ...
}

NAKAssertNotNil(expression, fmt, ...)

表明 expression 不是 nil。

在发布构建中被移除,指定的表达式也不会被执行。

- (void)setHomuhomu:(NSString *)homuhomu {

   // homuhomu が nil の時エラー
   NAKAssertNotNil(homuhomu, @"ほむほむは nil 以外");

   ...
}

NAKAssertNil(expression, fmt, ...)

表明 expression 是 nil。

在发布构建中被移除,指定的表达式也不会被执行。

NAKAssertKindOfClass(obj, clazz, fmt, ...)

表明对象是指定类或其子类的一个实例。

在发布构建中被移除。

id obj = ...;

// obj が NSArray か, そのサブクラスのインスタンスであることを表明
NAKAssertKindOfClass(obj, NSArray, @"obj は NSArray かサブクラス");

NAKAssertMemberOfClass(obj, clazz, fmt, ...)

表明对象是指定类的实例。

即使是子类实例,也会报错。

在发布构建中被移除。

NSOperation *ope = ...;

// ope が NSOperation 以外の時エラー (サブクラスでもエラー)
NAKAssertMemberOfClass(ope, NSOperation, @"ope は NSOperation そのもの (サブクラスもだめ)");
NSOperation *ope = [NSBlockOperation blockOperationWithBlock:^{ ... }];

// NSOperation のサブクラスだからエラーが起きる
NAKAssertMemberOfClass(ope, NSOperation, @"ope は NSOperation そのもの (サブクラスもだめ)");

NAKAssertCast(expression, clazz)

获取 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);

   ...
}

NAKAssertArrayType(array, clazz, fmt, ...)

表明 NSArray 中的所有元素都是指定类或其子类的一个实例。

在发布构建中被移除。

- (void)setStringArray:(NSArray *)array {

   // array に NSString (またはそのサブクラス) 以外のオブジェクトが入っているとエラー
   NAKAssertArrayType(array, NSString, @"文字列の配列を指定する");

   ...
}

NAKAssertMainThread(fmt, ...)

表明正在运行的线程是主线程。

在发布构建中被移除。

- (void)beginHomuhomuAnimation {

   // メインスレッド以外から呼ばれるとエラー
   NAKAssertMainThread(@"UI をいじるのでメインスレッドから呼ぶこと!");

   ...
}

NAKAssertDispatchQueue(queue, fmt, ...)

表明正在执行的调度队列是指定的队列。

在发布构建中被移除。

dispatch_queue_t _queue;

- (void)nonThreadSafeMethod {

   // 現在のキューが _queue 以外だとエラー
   NAKAssertDispatchQueue(_queue, @"変なキューで実行されてる!");

   ...
}