В универсальном приложении для iPad есть метод с предупреждением «не найден в протоколе», но он работает - PullRequest
0 голосов
/ 08 июля 2010

У моего универсального приложения для iPad есть метод, который я реализовал здесь:

Лучший способ программно определять оборудование iPad / iPhone

-(BOOL)isPad
{
  BOOL isPad;
  NSRange range = [[[UIDevice currentDevice] model] rangeOfString:@"iPad"];
  if(range.location==NSNotFound) isPad=NO;
  else isPad=YES;
  return isPad;
}

Когда я пишу свой кодкак это:

if( [[[UIApplication sharedApplication] delegate] isPad] ) // do something

Я получаю предупреждение:

'- isPad' не найден в протоколе

Однако он объявлен в моем классе делегата приложения:

-(BOOL)isPad;

А в реализации (выше).

Есть идеи, почему это так?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 08 июля 2010

-delegate возвращает id<UIApplicationDelegate>. Даже если ваш делегат приложения поддерживает -isPad, UIApplicationDelegate не поддерживает, что является предупреждением.

Вам необходимо привести возвращаемое значение к вашему классу, чтобы исключить предупреждение.

YourAppDelClass* appDel = [UIApplication sharedApplication].delegate;
if ([appDel isPad]) {
   ...
0 голосов
/ 08 июля 2010

Компилятор ожидает найти isPad, объявленный в протоколе uiapplicationdelegate.Попробуйте вместо этого сделать его методом экземпляра uiapplication.

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