Objective c 目标C将id(类型)转换为NSNumber:错误

Objective c 目标C将id(类型)转换为NSNumber:错误,objective-c,casting,Objective C,Casting,我想将id*转换为NSNumber* 试试这个 unsigned int ShortValue=[(NSNumber*)idObject unsigned ShortValue] 但这并不是一件好事 ARC不允许将间接指针强制转换为指向“NSNumber*”的Objective-C指针 你知道怎么做吗。 基本上,id*对象将是我的方法的参数,第二个参数将是这个id*对象的类型信息,然后在这个方法中,我对它执行类型特定的方法,就像上面的一个一样,idid是一个半原语类型,正如在objc.h中声明的

我想将id*转换为NSNumber*

试试这个
unsigned int ShortValue=[(NSNumber*)idObject unsigned ShortValue]

但这并不是一件好事

ARC不允许将间接指针强制转换为指向“NSNumber*”的Objective-C指针

你知道怎么做吗。
基本上,id*对象将是我的方法的参数,第二个参数将是这个id*对象的类型信息,然后在这个方法中,我对它执行类型特定的方法,就像上面的一个一样,id

id
是一个半原语类型,正如在objc.h中声明的那样

typedef struct objc_object {
    Class isa;
} *id;
在创建id对象时,不会使用“*”,因为它用于指向对象的指针,所以基本上不会这样做:

id *someObject;
正确的语法如下:

id someObject;
希望这有帮助

--------编辑------ 我试用了您使用的代码:

unsigned int ShortValue = [(NSNumber *)idObject unsignedShortValue];
它编译得很好。我认为错误在于如何创建
idObject

---------编辑---------

这是一份苹果的文档,位于
id

这里有两个关于
isa
指针的好资源:。在第二个链接中,滚动到文章的上三分之一,查找有关
isa*
的信息。希望这有帮助

:D我的意思是请提供OP表达式的正确语法@qegal哦哇那是一件微妙的事情!非常感谢,现在可以用了!!你能提供一些文档来告诉我这些东西的内部工作原理,比如isa*和id以及相关的东西吗?你能给我们展示一下你如何创建
idObject