3

基本的に、私の問題はこれです:

-(void)aMethod:(id)object;

理想的には、次のような方法を使用します。

NSObject*theObject;
[MysteryObject aMethod:theObject];

またはこのように:

[MysteryObject aMethod:NSObject];

基本的に、それが質問です。「id」変数が単純にクラス型を保持しているか、ライブ オブジェクトへのポインタを保持しているかをどのように区別できますか?

4

2 に答える 2

2

これはうまくいくはずです:

if ([MysteryObject respondsToSelector:@selector(isSubclassOfClass:)])
    NSLog(@"is a class");
else
    NSLog(@"is an object");

しかし実際には、よりダック型に適したものrespondsToSelectorにするために、実際に送信しようとしているメッセージを確認するために を使用する必要があります。

于 2012-05-09T20:47:20.453 に答える