我的iPad通用应用程序有一个我从这里实现的方法:
Best way to programmatically detect iPad/iPhone hardware
-(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'
但是,它在我的app委托类中声明:
-(BOOL)isPad;
在实施中(上图)。
为什么会这样?
提前致谢。
答案 0 :(得分:1)
-delegate
会返回id<UIApplicationDelegate>
。即使你的app委托支持-isPad
,UIApplicationDelegate也不支持,这就是警告。
您需要将返回值强制转换为类以消除警告。
YourAppDelClass* appDel = [UIApplication sharedApplication].delegate;
if ([appDel isPad]) {
...
答案 1 :(得分:0)
编译器期望在uiapplicationdelegate协议中找到声明的isPad。尝试使它成为uiapplication的实例方法。