检测方法 "A" 是否是 class 与实例方法?
Detect whether method "A" is a class vs. instance method?
我的程序中有多个对象,其中一些将方法 A 实现为 class 方法 (+ (void)A
),而另一些将其实现为成员函数 (- (void) A
) .
我如何使用 respondToSelector:
来确定 A 是否被给定对象支持为 class 而不是对象?
澄清一下;我没有实例,我只有 classes,使用 [NSBundle classNames:name] 获得。现在,我想知道我是否可以简单地在 class 上调用方法 A
,或者我需要先实例化 class,然后在实例上调用 A
。
您可以使用对象的 class
method/property 向对象询问其 class。 class 由对象(class Class
)表示。与其他对象一样,class 个对象理解 respondsToSelector:
消息。
if ([object respondsToSelector:@selector(A)]) {
[object A];
} else if ([object.class respondsToSelector:@selector(A)]) {
[object.class A];
}
P.S。这可能不是好的设计。您可能应该在任何地方都将 A
实现为实例方法,而不是有时将其实现为 class 方法。
if ([[NSBundle classNamed:name] respondsToSelector:@selector(A)]){
//Your class responds to the selector i.e. its a class method
} else if ([[NSBundle classNamed:name] instancesRespondToSelector:@selector(A)]){
//Your class' instances respond to the selector, i.e. its an instance method
}
我的程序中有多个对象,其中一些将方法 A 实现为 class 方法 (+ (void)A
),而另一些将其实现为成员函数 (- (void) A
) .
我如何使用 respondToSelector:
来确定 A 是否被给定对象支持为 class 而不是对象?
澄清一下;我没有实例,我只有 classes,使用 [NSBundle classNames:name] 获得。现在,我想知道我是否可以简单地在 class 上调用方法 A
,或者我需要先实例化 class,然后在实例上调用 A
。
您可以使用对象的 class
method/property 向对象询问其 class。 class 由对象(class Class
)表示。与其他对象一样,class 个对象理解 respondsToSelector:
消息。
if ([object respondsToSelector:@selector(A)]) {
[object A];
} else if ([object.class respondsToSelector:@selector(A)]) {
[object.class A];
}
P.S。这可能不是好的设计。您可能应该在任何地方都将 A
实现为实例方法,而不是有时将其实现为 class 方法。
if ([[NSBundle classNamed:name] respondsToSelector:@selector(A)]){
//Your class responds to the selector i.e. its a class method
} else if ([[NSBundle classNamed:name] instancesRespondToSelector:@selector(A)]){
//Your class' instances respond to the selector, i.e. its an instance method
}