0
我已經將NSNumber對象放入NSDictionary對象,然後彈出並將其分配給一個聲明爲NSString實例的變量。將NSNumber對象分配給NSString對象不會導致任何錯誤或警告
NSString *test;
NSDictionary *dict = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:1000] forKey:@"key"];
test = [dict valueForKey:@"key"];
NSLog(@"%@, type of %@", test, NSStringFromClass([test class]));
return 0;
運行上述代碼後,我發現聲明爲(NSString *)的測試類型是__NSCFNumber。爲什麼會發生,爲什麼編譯器沒有提供警告或錯誤? 爲了保持測試爲NSString的實例,是否必須使用NSString構造函數,例如NSStringWithFormat ...?
歡迎來到動態打字的世界。 – tobiasbayer
可能的重複:http://stackoverflow.com/questions/4357063/what-is-the-class-nscfnumber-in-ios-4-1 –