0

我想将 id* 转换为 NSNumber *

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

但这不是编译

Cast of an indirect pointer to an Objective-C pointer to 'NSNumber *' is disallowed with ARC

任何想法如何做到这一点。基本上 id* 对象将是我的方法的参数,第二个参数将是这个 id* 对象的类型信息,然后在这个方法中,我正在对它执行类型特定的方法,就像上面的一样

4

1 回答 1

1

id是一种半原始类型,因为它在 objc.h 中声明为

typedef struct objc_object {
    Class isa;
} *id;

创建 id 对象时,不要使用“*”,因为那是指向对象的指针,所以基本上不要这样做:

id *someObject;

正确的语法是这样的:

id someObject;

希望这可以帮助!

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

unsigned int ShortValue = [(NSNumber *)idObject unsignedShortValue];

它编译得很好。我认为错误是您如何创建idObject.

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

这是一个苹果文档:http id: //developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/Chapters/ocObjectsClasses.htmlisa ,这里有两个关于指针 的好资源: isa在objective-中是什么意思- C?http://cocoasamurai.blogspot.com/2010/01/understanding-objective-c-runtime.html。在第二个链接中,滚动到文章的前三分之一以查找关于 的信息isa*。希望这可以帮助!

于 2012-06-28T14:38:15.317 回答