2011-09-16 44 views
0

我知道,當它返回一個對象時,我可以使用object_getClassName獲取respondsToSelector方法的返回類型。但它在返回基本類型如NSInteger時無效。 我的應用程序崩潰了,當我初始化一個錯誤的SEL,返回一個NSInteger.T_T的NSString 現在我只能做什麼是make方法返回一個NSNumber值,當我需要它們時返回原始類型。我必須這樣做嗎?當它返回原始類型時,有一些簡單的方法可以獲得SEL的返回類型嗎?如何在返回基本類型值時獲取respondsToSelector方法的返回類型

回答

0

使用NSNumber時出現什麼問題?如果您知道數字的「類型」(即整數,浮點數),則可以撥打-[NSNumber integerValue]-[NSNumber floatValue]以獲取所需的原語。

如果你不知道發生了什麼基本類型會趕回來,你可以使用一個NSNumber實例的objCType屬性來獲取包含@encode()指令C風格的字符串。這些指出了Objective-C數據的編碼方式。有關更多信息,請參閱Type Encoding

根據您返回的編碼C字符串的類型,您可以根據實際存儲在NSNumber實例中的任何基本類型進行響應,並使用上述方法檢索正確的值。

+0

當我使用大量的NSNumber時會導致高內存使用率嗎? – Dogstar

+0

它不應該。如果你擔心,你應該剖析你的代碼,但不要事先假設內存使用情況等。:) – LucasTizma

+0

它確實幫了我很多,謝謝你~~~ – Dogstar