Я хочу написать функцию или директиву наподобие NSLog(), которая принимает любые переменные, примитивы и объекты. В этой функции я хочу различать их.
Я знаю, как это работает для объектов:
- (void)test:(id)object {
if ([object isKindOfClass:[NSString class]])
...
но как мне отличить объекты от структур или даже целых чисел или чисел с плавающей запятой. Что-то вроде:
"isKindOfStruct:CGRect" or "isInt"
например?
Возможно ли это? Я подумал, что если вы можете отправить все в (скрытые) объекты, целые числа, структуры), это должно быть возможно?
Спасибо за любую помощь!
РЕДАКТИРОВАТЬ
Моя конечная цель — реализовать какой-то полиморфизм.
Я хочу иметь возможность вызывать свою функцию:
MY_FUNCTION(int)
MY_FUNCTION(CGRect)
MY_FUNCTION(NSString *)
...
or [self MYFUNCTION:int]...
и в MY_FUNCTION
-(void)MYFUNCTION:(???)value {
if ([value isKindOf:int])
...
else if ([value isKindOf:CGRect])
...
else if ([value isKindOfClass:[NSString class]])
...
}
я знаю, что isKindOf не существует, и вы даже не можете выполнять такие методы на примитивах. Я также не уверен в "???" общий тип «значения» в заголовке функции.
Это возможно?