Я работаю над проектом, где у меня есть класс, который имеет свойство UIView
. Я также определяю класс, который является подклассом UIView
, который определяет определенный метод. Если у меня есть следующий код, я получаю предупреждение, когда я строю:Если объект отвечает на все еще предупреждение
// In this example, myView is UIView property which *may* contain a UIView or
// my subclassed-UIView which has the myMethod method
if([myView respondsToSelector:@selector(myMethod)]){
[myView myMethod]
}
Это предупреждение «UIView может не реагировать на" -myMethod». Предупреждение, очевидно, не останавливает создание приложения, но я просто пытаюсь выяснить, как с ним бороться. Это правильный способ сделать это? Есть ли способ остановить это предупреждение?
Проверка, отвечает ли объект сообщения, как правило, считается лучше. Просить класс - это круговой способ узнать, будет ли код отвечать на ваше сообщение. – Chuck
Предположительно, идея здесь заключается в написании кода, который применяется только к пользовательскому подклассу. Ответит ли он на селектор, но если вы делаете несколько вызовов одновременно или просто убедитесь, что ваш код будет делать именно то, что вы ожидаете, проверка класса - это то, что я сделал бы. – jtbandes
Проверка класса также недостаточна; Затем я должен проверить версию класса (если это возможно). Сравнивая его с тем, что было сделано в JavaScript-коде, он хотел бы проверить браузер, используемый для просмотра страницы, чтобы проверить, доступна ли функция JavaScript. – kiamlaluno