如何检查 class 是否由用户创建它是 pobjective-c API 中提供的 class
how to check if the class is created by user of it is a class provided in pobjective-c API
我有一个用户定义的 class 类型的 CircularDynamicUIView。它位于一个包含多个视图的数组中,例如“buttonviews、uiimageviews、scrollviews 等”。
如何在循环内以编程方式检测此用户定义的 class。例如:使用 if 语句
如何检查此 class 是否是用户创建或开发的 class,而不是 objective-c 已经创建的
正如@rmaddy 在评论中指出的那样,您无法明确区分您的自定义 CircularDynamicUIView
子类和默认 UIView
......但是您 可以 按特定顺序求值。
示例(使用您之前的问题):
for (id uiComponent in uiviews) {
if ([uiComponent isKindOfClass:[CircularDynamicUIView class]]) {
NSLog(@"Yes, it is a CircularDynamicUIView");
} else {
NSLog(@"No, it is NOT a CircularDynamicUIView");
}
// if CircularDynamicUIView is a subclass descendant of UIView
// this will also be true
if ([uiComponent isKindOfClass:[UIView class]]) {
NSLog(@"Yes, it is a UIView");
} else {
NSLog(@"No, it is NOT a UIView");
}
}
由于两个 if
条件都为真,如果第一个测试为真,您将不想评估第二个 if
。
同样,根据您之前的问题,您可以使用这种方法:
for (id uiComponent in uiviews) {
CircularDynamicUIView *cdView;
UIView *uiView;
UIImageView *uiImageView;
if ([uiComponent isKindOfClass:[CircularDynamicUIView class]]) {
cdView = (CircularDynamicUIView *)uiComponent;
} else if ([uiComponent isKindOfClass:[UIImageView class]]) {
uiImageView = (UIImageView *)uiComponent;
} else if ([uiComponent isKindOfClass:[UIView class]]) {
uiView = (UIView *)uiComponent;
}
if (cdView) {
// do what you want because it's a CircularDynamicUIView
if ([cdView isHidden]) {
// ...
}
// etc ...
}
if (uiImageView) {
// do what you want because it's a UIImageView
if ([uiImageView isHidden]) {
// ...
}
// etc ...
}
if (uiView) {
// do what you want because it's a UIView
if ([uiView isHidden]) {
// ...
}
// etc ...
}
}
我有一个用户定义的 class 类型的 CircularDynamicUIView。它位于一个包含多个视图的数组中,例如“buttonviews、uiimageviews、scrollviews 等”。 如何在循环内以编程方式检测此用户定义的 class。例如:使用 if 语句
如何检查此 class 是否是用户创建或开发的 class,而不是 objective-c 已经创建的
正如@rmaddy 在评论中指出的那样,您无法明确区分您的自定义 CircularDynamicUIView
子类和默认 UIView
......但是您 可以 按特定顺序求值。
示例(使用您之前的问题):
for (id uiComponent in uiviews) {
if ([uiComponent isKindOfClass:[CircularDynamicUIView class]]) {
NSLog(@"Yes, it is a CircularDynamicUIView");
} else {
NSLog(@"No, it is NOT a CircularDynamicUIView");
}
// if CircularDynamicUIView is a subclass descendant of UIView
// this will also be true
if ([uiComponent isKindOfClass:[UIView class]]) {
NSLog(@"Yes, it is a UIView");
} else {
NSLog(@"No, it is NOT a UIView");
}
}
由于两个 if
条件都为真,如果第一个测试为真,您将不想评估第二个 if
。
同样,根据您之前的问题,您可以使用这种方法:
for (id uiComponent in uiviews) {
CircularDynamicUIView *cdView;
UIView *uiView;
UIImageView *uiImageView;
if ([uiComponent isKindOfClass:[CircularDynamicUIView class]]) {
cdView = (CircularDynamicUIView *)uiComponent;
} else if ([uiComponent isKindOfClass:[UIImageView class]]) {
uiImageView = (UIImageView *)uiComponent;
} else if ([uiComponent isKindOfClass:[UIView class]]) {
uiView = (UIView *)uiComponent;
}
if (cdView) {
// do what you want because it's a CircularDynamicUIView
if ([cdView isHidden]) {
// ...
}
// etc ...
}
if (uiImageView) {
// do what you want because it's a UIImageView
if ([uiImageView isHidden]) {
// ...
}
// etc ...
}
if (uiView) {
// do what you want because it's a UIView
if ([uiView isHidden]) {
// ...
}
// etc ...
}
}