2

私はこのようなことをするコードを作成しようとしています。

NSLogBool(self.propertyName)

デバッガーコンソールの出力は次のようになります

"PropertyName is set to YES."

どうすればそれを達成できるかについてのヒントはありますか?このコードは特定のクラスに依存しません。つまり、これを任意のクラスで使用できる関数として持つでしょうか?

4

2 に答える 2

4

特定のクラスから分離する必要がある場合は、プリプロセッサと C を使用するのが最善の策です。このようなものはうまくいくはずです。

#define NSBOOLLog(x) CFILogBoolean(#x, x)

extern void CFILogBoolean(char *propertyName, BOOL val);

void CFILogBoolean(char *propName, BOOL val) {
    printf("%s is set to %s", propName, (val ? "YES" : "NO"));
}

その extern 宣言が、コンパイル ユニットから見えるヘッダー (おそらくユーティリティ ヘッダー、または共通の typedef のセットなど) に配置されている限り、クラスに依存することなく自由に使用できます。

于 2013-05-09T16:30:56.460 に答える
1

MACROプロジェクト内の一般的な定数ファイルまたはファイルでこれを定義し.pchます。

#define NSLogBool(status)   NSLog(@"%@",(status)?@"YES":@"NO")

次に、次を使用してステータスログを確認します

BOOL status = NO;
NSLog(@"%@",(status)?@"YES":@"NO");
NSLogBool(status);
status = YES;
NSLogBool(status);
于 2013-05-09T16:34:51.390 に答える