目标C的C#中对象的等价物是什么?

Way*_* Lo 0 c# types objective-c ambiguity

在c#我可以声明object o;然后我可以分配o=(float)5.0;o="a string."是否有Objective-C的等价物?我尝试使用,id但它不采用像float或integer这样的原始类型.谢谢你的帮助.

Bar*_*ark 11

Objective-C在CLR的单词中没有"统一类型系统".换句话说,作为C的超集,Objective-C的原始类型与对象实例完全不同.该id类型可以将引用(OS X/iPhone Objective-C运行时中的指针)存储到任何对象实例.C的原始类型(例如int,float等)必须包装NSValueNSNumber分配给类型id.当然,这正是C#编译器正在做的事情.只是在C#中,你不必明确地进行(un)拳击转换.

很快,代码就像

float val;
id obj = [NSNumber numberWithFloat:val];
...
float v = [obj floatValue];
Run Code Online (Sandbox Code Playgroud)

如果不幸的是,按现代标准来说,它将成为第二天性.