Как получить тип возвращаемого значения метода responsedsToSelector, когда он возвращает значение примитивного типа - PullRequest
0 голосов
/ 16 сентября 2011

Я знаю, что могу получить возвращаемый тип метода responsedsToSelector с помощью object_getClassName, когда он возвращает объект. Но он не работает, когда возвращает тип примитива, такой как NSInteger.Мое приложение зависло, когда я инициировал строку NSString с неправильным SEL, который возвращает NSInteger.T_T. Теперь я могу только сделать, чтобы методы возвращали значение NSNumber, когда они мне нужны, возвращают примитивный тип.Должен ли я сделать это?Есть ли какой-нибудь простой способ получить возвращаемый тип SEL, когда он возвращает примитивный тип?

1 Ответ

0 голосов
/ 16 сентября 2011

В чем проблема с использованием NSNumber? Если вы знаете, что такое «тип» числа (то есть, целое число, число с плавающей запятой), вы можете позвонить -[NSNumber integerValue] или -[NSNumber floatValue], чтобы получить необходимый вам примитив.

Если вы не знаете, какой тип примитива будет возвращен, вы можете использовать свойство objCType экземпляра NSNumber, чтобы получить строку в стиле C, содержащую директивы @encode(). Они показывают, как данные Objective C кодируются. См. Тип кодирования для получения дополнительной информации.

Исходя из возвращаемой строки кодирования типа C, вы можете ответить в соответствии с тем, какой тип примитива действительно хранится в вашем экземпляре NSNumber, и использовать вышеупомянутые методы для получения правильного значения.

...