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的答案以了解更多细节。