Используя свойство самоанализа, чтобы узнать, был ли тип double объявлен как NSTimeInterval? - PullRequest
0 голосов
/ 30 октября 2011

Допустим, у нас есть класс со свойством NSTimeInterval:

@interface MyClass : NSObject {
    NSTimeInterval timeSpent;
}
@property (assign) NSTimeInterval timeSpent;

Затем я могу получить тип свойства следующим образом:

const char * type = property_getAttributes(class_getProperty([MyClass class], "timeSpent"));

... где type будет что-то вроде: Td, VtimeSpan с "d", указывающим, что это двойное число (что нормально, так как в документации написано typedef double NSTimeInterval)

Могу ли я что-нибудь сделать, чтобы узнать, что свойство timeSpent изначально было объявлено как NSTimeInterval?

Спасибо!

1 Ответ

1 голос
/ 30 октября 2011

Вы не можете. NSTimeInterval - это typedef из double, что означает, что это точно такой же тип с новым именем. Это удобно для написания самодокументируемого кода, но это ничего не меняет в типе. (Он также позволяет изменять базовый тип, оставаясь совместимым с исходным кодом; они могут изменить NSTimeInterval на псевдоним float или _Complex double или что-то еще целиком, и ваш код не будет заботиться.

Есть ли причина, по которой вы заботитесь? Вы пытаетесь написать какой-то общий код, который обрабатывает временные интервалы иначе, чем обычные числа? Какая у тебя конечная цель?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...