如何将类型为id的对象强制转换或设置为其他类型,例如UIImageView或UIView

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

我死掉了以下代码,但无法使用指针对象

uiComponent

键入后是否已投放?

请让我知道如何在UIView或UIImageView类中键入uiComponent对象,然后继续使用它进行编程

代码

 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]) {
            …
    ..
    …
            }
xiekaixu 回答:如何将类型为id的对象强制转换或设置为其他类型,例如UIImageView或UIView

根据类型设置本地对象,如果它不是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 ...
    }
}
本文链接:https://www.f2er.com/3137459.html

大家都在问