如何检查对象是否是UIButton

Blo*_*nce 2 objective-c uibutton

我有一个if声明,需要知道对象类型是否是一个按钮.

到目前为止,我有:

NSLog(@" %@ ",[myObject class]);
Run Code Online (Sandbox Code Playgroud)

返回UIButton,所以我知道这是有效的.

接下来是if声明:

if([myObject isMemberOfClass:_______])
Run Code Online (Sandbox Code Playgroud)

这是我遇到问题的地方,因为我不允许UIButton作为参数提供isMemberOfClass:.我尝试过使用UIButtonTypeCustom,但它不符合if声明.

有什么建议 ?

谢谢.

ric*_*ter 7

其他的答案和评论已经在这方面得到了解决,但它可以更清晰.

使用时isMemberOfClass:,参数必须是Class对象.您可以使用class选择器为任何类获取其中一个.因此:

if ([myObject isMemberOfClass:[UIButton class]])
    NSLog(@"It's a UIButton");
else
    NSLog(@"It's not a UIButton");
Run Code Online (Sandbox Code Playgroud)

现在,isMemberOfClass:只有YES在对象特定是实例的情况下才会返回UIButton.但是,对于对象是否从特定类继承感兴趣更为常见- 尤其是在这里,因为UIKit可能使用UIButton幕后的私有子类.为此,您需要isKindOfClass::

if ([myObject isKindOfClass:[UIButton class]])
    NSLog(@"It's a UIButton or some subclass");
else
    NSLog(@"It's not a UIButton");
Run Code Online (Sandbox Code Playgroud)