Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 两类比较_Ios_Objective C_Class - Fatal编程技术网

Ios 两类比较

Ios 两类比较,ios,objective-c,class,Ios,Objective C,Class,我正在比较两个类,使用属性是类的一种,但似乎不起作用。我已经记录了似乎相同的输出,但我不明白为什么它们不工作 UIView *childView = [view subviews][j-1]; NSLog(@"childview class: %@", childView.class); NSLog(@"childview.class class: %@", [childView.class class]); NSLog(@"sfidimmer button class: %@", [SFIDi

我正在比较两个类,使用属性
是类的一种,但似乎不起作用。我已经记录了似乎相同的输出,但我不明白为什么它们不工作

UIView *childView = [view subviews][j-1];
NSLog(@"childview class: %@", childView.class);
NSLog(@"childview.class class: %@", [childView.class class]);
NSLog(@"sfidimmer button class: %@", [SFIDimmerButton class]);


if([childView.class isKindOfClass:[SFIDimmerButton class]]){
   NSLog(@"iskindofclass");
   curFrameSize = dimFrameWidth;
}
nslogs的输出:

childview class: SFIDimmerButton

childview.class class: SFIDimmerButton

sfidimmer button class: SFIDimmerButton

如果情况允许,控件不能进入内部,请告诉我原因。

不要使用类do like as

if([childView isKindOfClass:[SFIDimmerButton class]]){

    // do your stuff here  ..
}

希望对您有所帮助。

您的支票错了。您应该在对象上调用isKindOfClass,而不是在对象的类上调用

因此,与其检查

if([childView.class isKindOfClass:[SFIDimmerButton class]]){
    NSLog(@"iskindofclass");
    curFrameSize = dimFrameWidth;
}
试试这个

if([childView isKindOfClass:[SFIDimmerButton class]]){
    NSLog(@"iskindofclass");
    curFrameSize = dimFrameWidth;
}
您也可以使用
isMemberOfClass
,但大多数情况下,您希望使用
iskinofclass
:以确保您的代码也可以与子类一起工作

isKindOfClass
:如果接收方是指定类的实例或从指定类继承的任何类的实例,则返回YES

isMemberOfClass
:如果接收方是指定类的实例,则返回YES。

您的错误

Self.class
返回类对象,同时使用用于检查类实例的
isKindOfClass

您可以使用
isKindOfClass
检查对象是否是该类的实例,如上所述

文件

返回一个布尔值,该值指示接收方是给定类的实例还是从该类继承的任何类的实例

您还可以使用

[childView.class isSubclassOfClass:[SFIDimmerButton class]]
返回一个布尔值,该值指示接收类是给定类的子类还是与给定类相同


使用id数据类型为的任何对象,然后将其与类类型进行比较。如果满足,则使用目标类键入cast

id childView = [view subviews][j-1];
if ([childView isKindOfClass:[SFIDimmerButton class]]) {

    SFIDimmerButton *btnDimmer = (SFIDimmerButton *)childView;
    // perform your action with derived button..
}

希望,这会对你有所帮助。
谢谢。

谢谢,但是你能解释一下我使用课堂时发生了什么吗?@Masood这应该能帮助你找出原因:另外,请看leo的答案以了解更多细节。