作为学习目标C的一部分,我有一个例外,第三方库返回一个随机对象。然后我需要检查它是否是UIView的一个实例,然后检查它是否已经返回groundColor proprty。如果确实如此,我将它设置为一些随机颜色。
下面的代码可以做到这一点,但我很好奇,如果它是一个静音对象,即使你有这个属性,你也无法改变它你将如何测试它。
这里的代码运行良好,没有问题,但只是好奇也让我知道你看到我做错了什么。就像我说最终结果还可以
id myView = [RandomObjectFactory randomNSObject];
UIView* parentView =[self view];
if ([myView isKindOfClass:[UIView class]])
{
UIView* uiView = (UIView*) myView;
SEL sel = @selector(backgroundColor);
if([uiView respondsToSelector:sel])
{
UIColor *textColour = [UIColor colorWithRed:0.1 green:0.2 blue:0.1 alpha:1.0];
[uiView setBackgroundColor:textColour];
}
[parentView addSubview:uiView];
}
答案 0 :(得分:0)
你应该检查选择器
setBackgroundColor:
同样,这将确保该属性不是只读的。然后,您可以在调用setBackgroundColor之前和之后检查backgroundColor的结果,以确保确实已设置该值。在这种情况下,你知道它将是你知道UIView的属性,但我想你正在寻找一个更通用的解决方案。