如何将类型为 id 的对象转换或设置为另一种类型,如 UIImageView 或 UIView

how to cast or set an object of type id to another type like UIImageView or UIView

在下面的代码中,我遍历了条目,它们可能是 UIView 或 UIImageView 类型。我想检查 uiComponent 是否属于上述类型,然后我想在代码中继续使用该 uiComponent 是UIView还是UIImageView?

我背了下面的代码,但是我不能使用指针对象

uiComponent

打字后??

请告诉我如何将 uiComponent 对象键入 类 UIView 或 UIImageView 并使用它继续编程

代码

 for (id uiComponent in uiviews) {
            UIView *uiView;
            UIImage *uiImageView;

         if ([AQSViewHelper isEntryOfTypeUIView:uiComponent]) {
                uiComponent = (UIView *)uiComponent;
         }
            if ([AQSViewHelper isEntryOfTypeUIImageView:uiComponent]) {
            uiComponent = (UIImageView *)uiComponent;
        }

         if (![uiComponent isHidden]) {
            …
    ..
    …
            }

根据类型设置本地对象,如果不是 nil 则使用它:

for (id uiComponent in uiviews) {
    UIView *uiView;
    UIImageView *uiImageView;

    if ([AQSViewHelper isEntryOfTypeUIView:uiComponent]) {
        uiView = (UIView *)uiComponent;
    }
    if ([AQSViewHelper isEntryOfTypeUIImageView:uiComponent]) {
        uiImageView = (UIImageView *)uiComponent;
    }

    if (uiView) {
        // do what you want because it's a UIView
        if ([uiView isHidden]) {
            // ...
        }
        // etc ...
    }
    if (uiImageView) {
        // do what you want because it's a UIView
        if ([uiImageView isHidden]) {
            // ...
        }
        // etc ...
    }
}

或者,因为您已经在 if 个街区,您可以在那里进行:

for (id uiComponent in uiviews) {
    if ([AQSViewHelper isEntryOfTypeUIView:uiComponent]) {
        // do what you want because it's a UIView
        UIView *uiView = (UIView *)uiComponent;
        if ([uiView isHidden]) {
            // ...
        }
        // etc ...
    }
    if ([AQSViewHelper isEntryOfTypeUIImageView:uiComponent]) {
        // do what you want because it's a UIImageView
        UIImageView *uiImageView = (UIImageView *)uiComponent;
        if ([uiImageView isHidden]) {
            // ...
        }
        // etc ...
    }
}