我正在使用XCode 4.2进行开发,并想知道如何对宏参数进行字符串化?我试图使用#
,因为我认为我会在 C 中使用,但无济于事。这是我的宏:
#define ASSIGN_PROPERTY(PROP_NAME, PROP_NAME_PARAM) { \
if (PROP_NAME_PARAM == nil) { \
NSAssert(PROP_NAME != nil, @"#PROP_NAME is already nil"); \
PROP_NAME = nil; \
} else { \
NSAssert1(PROP_NAME == nil, @"#PROP_NAME is already set, address=%p", PROP_NAME); \
PROP_NAME = PROP_NAME_PARAM; \
} \
}
然后在一个以foo
为属性的类中,我像这样定义它的setter:
- (void) setFoo:(NSObject *)fooParam {
ASSIGN_PROPERTY(foo, fooParam)
}
假设客户端使用非零值调用setFoo
,但foo
属性已经非零。我想要打印宏:
foo已设置,地址= 0x5e55400
但它正在印刷:
#PROP_NAME已设置,地址= 0x5e55400
有什么建议吗?
答案 0 :(得分:2)
你有没有试过像
这样的东西NSAssert(PROP_NAME != nil, @"%s is already nil", #PROP_NAME);