Я занимаюсь разработкой в 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
в качестве свойства, я определяю его установщик следующим образом:
- (void) setFoo:(NSObject *)fooParam {
ASSIGN_PROPERTY(foo, fooParam)
}
Скажем, клиент звонит setFoo
с ненулевым значением, но свойство foo
уже не ноль.Я хочу, чтобы макрос печатал:
foo уже установлен, адрес = 0x5e55400
Но вместо этого он печатает:
# PROP_NAME isуже установлен, адрес = 0x5e55400
Есть совет?