NSAssert
ObjCメソッドとC関数内のプレーンassert
(または他の何か)の両方をラップするassertマクロを使用したいと思います。
私が現在ObjCメソッド内で実行していることを実行時に(またはもっと良いのはコンパイル時に!)検出するためのクリーンな方法はありますか?
私はそれを知ってself
おり_cmd
、メソッド内で定義されて有効になりますが、ローカル変数の存在を安全にチェックする明白な方法があるかどうかはわかりません。明らかなことを忘れていますか?
NSAssert
ObjCメソッドとC関数内のプレーンassert
(または他の何か)の両方をラップするassertマクロを使用したいと思います。
私が現在ObjCメソッド内で実行していることを実行時に(またはもっと良いのはコンパイル時に!)検出するためのクリーンな方法はありますか?
私はそれを知ってself
おり_cmd
、メソッド内で定義されて有効になりますが、ローカル変数の存在を安全にチェックする明白な方法があるかどうかはわかりません。明らかなことを忘れていますか?
たぶん、標準の定義済みマクロを使用して、ファイルがObjective-cコンパイラによってコンパイルされているかどうかをテストできます。
//in the header file
#define MyAssert(A) NSAssert(A) assert(A)
//in the C file
#if !defined(__OBJC__)
#define NSAssert(A)
//in the Obj-C file
#if defined(__OBJC__)
#define assert(A)
/**/
f()
{
//...
MyAssert(TestCase && "Error Message");
//...
}