Использования лязга и Objective-C Я задаюсь вопросом, могу ли я получить печатную строку, описывающую тип потенциально нулевого параметра (т.е. во время компиляции только один типа информации.)Версия для печати типа строки из параметра
Например, что-то вроде :
- (void)myFunc:(NSString *)aNilString {
NSLog(@"%s", __typeof__(aNilString));
}
Очевидно, что это не сработает, потому что __typeof__ получает мне фактический тип, а не строку. В C++ у нас есть typeid, который возвращает std :: type_info, но это имя искажено, например. «P12NSString *», а не «NSString *».
В идеале мне бы хотелось что-то, что можно передать в функции objc_getClass(). Есть ли способ получить то, что я хочу?
Изменить: Я хотел бы, чтобы не иметь для компиляции, как C++, так что это решение из:
abi::__cxa_demangle(typeid(*aNilString).name(), 0, 0, 0));
Я знаком со всем добросовестным исполнением. Я знаю, что технически тип известен, поэтому это должно быть тривиально, однако, чтобы сократить длинную историю, эта функция генерируется последовательностью макросов, что делает тип параметра более сложным, чем вы думаете, следовательно, вопрос. – Tim
Если вы генерируете код, @Tim, почему не удается просто создать еще одну копию имени типа? '[ClassName class]' предоставит вам объект класса, даже если метод получит 'nil'. –
Это, в конечном счете, то, что я сделал. Я просто подумал, что это интересный вопрос. – Tim