如何检查 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 ...
    }
}