【发布时间】:2024-01-16 12:24:01
【问题描述】:
在下面的代码中,我遍历条目,它们可能是 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]) {
…
..
…
}
【问题讨论】:
-
isKindOfClass:? *.com/questions/3653929/… ? -
您在这里的投射根本没有做任何事情(但也没有必要)。我怀疑你有不同的问题。当你说“我不能使用指针对象”时,你是什么意思?您的代码还将
uiImageView定义为 UIImage(而不是 UIImageView)。由于从未使用过该变量,因此尚不清楚这是否是故意的。请注意,UIImageView 也是 UIView,因此在所有情况下它都是 UIView。如果它是 UIImageView 与不是,您打算以何种方式以不同的方式使用这些元素?为什么不能总是把它当作 UIView 对待? -
当我说强制转换什么都不做时,我的意思是
(UIView *)uiComponent中的(UIView *)对运行时没有影响。它只是告诉编译器“我知道我在这里做什么;请不要发出警告。”在赋值行之后,uiComponent与之前的值完全相同,编译器仍将其视为id类型。它与代码行uiComponent = uiComponent;相同
标签: objective-c uiview casting uiimageview