如何检查id属性是否发生了变异

时间:2011-08-28 09:59:14

标签: objective-c xcode4

作为学习目标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];
    }

1 个答案:

答案 0 :(得分:0)

你应该检查选择器

 setBackgroundColor: 

同样,这将确保该属性不是只读的。然后,您可以在调用setBackgroundColor之前和之后检查backgroundColor的结果,以确保确实已设置该值。在这种情况下,你知道它将是你知道UIView的属性,但我想你正在寻找一个更通用的解决方案。