Как проверить, не изменено ли свойство id - PullRequest
0 голосов
/ 28 августа 2011

В рамках обучения Objective CI имел исключение, когда сторонняя библиотека возвращает случайный объект.Затем мне нужно проверить, является ли это экземпляром UIView, а затем проверить, есть ли у него свойство GroundColor.Если это так, то я устанавливаю его на какой-нибудь случайный цвет.
Код ниже делает это, но мне любопытно, что, если это был немой объект, и даже если у вас есть это свойство, вы не можете изменить его, как бы вы его протестировали.
вот код, который работает без проблем, но просто любопытно, дайте мне знать, что вы видите, я делаю неправильно.Как я уже сказал, конечный результат в порядке

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 голосов
/ 28 августа 2011

Вы должны проверить селектор

 setBackgroundColor: 

также, это гарантирует, что свойство не только для чтения. Затем вы можете проверить результат backgroundColor до и после вызова setBackgroundColor, чтобы убедиться, что значение действительно установлено. В этом случае вы знаете, что это будет так, как вы знаете о свойствах UIView, но я думаю, что вы ищете более общее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...