基本上,我的问题是:
-(void)aMethod:(id)object;
理想情况下,我会使用我的方法:
NSObject*theObject;
[MysteryObject aMethod:theObject];
或者像这样:
[MysteryObject aMethod:NSObject];
基本上,这就是问题所在。如何区分'id'变量是仅仅包含Class类型还是指向活动对象的指针?
答案 0 :(得分:2)
这应该有效:
if ([MysteryObject respondsToSelector:@selector(isSubclassOfClass:)])
NSLog(@"is a class");
else
NSLog(@"is an object");
但事实上,为了更加友善,你应该使用respondsToSelector
检查你实际要发送的消息。
答案 1 :(得分:0)
虽然使用运行时函数非常好,但我相信这是一种更简单的方法来实现相同的结果:
- (void) aMethod:(id)anObject
{
if( anObject == [anObject class] ) {
// the object is a class
}
else {
// the object is an instance object
}
}