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 *オブジェクトは私のメソッドの引数になり、2番目の引数はこのid *オブジェクトの型情報になります。次に、このメソッド内で、上記のように型固有のメソッドを実行します。

4

1 に答える 1

1

idobjc.hで次のように宣言されているため、はセミプリミティブ型です。

typedef struct objc_object {
    Class isa;
} *id;

idオブジェクトを作成するときは、オブジェクトへのポインタ用である「*」を使用しないため、基本的にこれを行わないでください。

id *someObject;

正しい構文は次のとおりです。

id someObject;

お役に立てれば!

--------編集------私はあなたが使用したコードを試しました:

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

そしてそれはうまくコンパイルされました。エラーは、作成方法にあると思いますidObject

- - - - -編集 - - - - -

http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/Chapters/ocObjectsClasses.htmlのアップルドキュメントと、ポインタに関する2idつ の優れたリソースがあります。 c?http://cocoasamurai.blogspot.com/2010/01/understanding-objective-c-runtime.html。2番目のリンクで、記事の上部3分の1までスクロールして、に関する情報を見つけます。お役に立てれば!isaisa*

于 2012-06-28T14:38:15.317 に答える