2011-03-20 84 views
0


我正在为iPhone使用新的FBConnect。但我已遵循给定的步骤..但是当我建立它显示我这个警告“警告:'UIDevice'可能不会响应'-isMultitaskingSupported'”和应用程序崩溃。我正在使用iphone模拟器4.1,但它仍然向我显示此警告。如果有人能帮我解决这个问题,那就太好了。警告:'UIDevice'可能不会响应'-isMultitaskingSupported'

在此先感谢。

回答

4

4.0之前版本的iOS没有此方法,因此您必须先使用respondsToSelector在调用之前检查该方法是否存在。

if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] && [[UIDevice currentDevice] isMultitaskingSupported]) { 
    // Device supports multi-tasking... 

} 
else { 
    // No such luck. 
} 

这样,而你正在使用的iPhone模拟器4.1,我猜你已经设置了iOS版本3.2(使用硬件菜单上的选项版本来改变这一点)。

+0

在你的示例代码,忘记处理UIDevice响应“isMultitaskingSupported”但返回false的情况。此外,模拟器中的硬件设置与警告无关。在您的项目或目标版本设置中检查“iOS部署目标”。 – Anomie 2011-03-20 22:12:30

+0

感谢您的回覆:)。因为我已经使用了具有FBApp登录对话框的FBconnect。我试着看看这个新FBconnect是否可以工作,以便我可以在3.2和4.0上都使用它。但是我被困在这里 window = [[UIApplication sharedApplication] .windows objectAtIndex:0];应用程序崩溃在这里.. :(。 – insomiac 2011-03-20 22:13:32

+0

@Anomie真正 - 我只是试图说明各种可能的状态。这就是说,我会更新片段(你几乎总是检查两个相同的'if'无论如何。) – 2011-03-20 22:14:24

0

您可以添加以下提到梅索德哟你的项目,以检查是否有任何行动之前,设备支持多线程

- (BOOL) isMultitaskingSupported 
{ 
    BOOL result = NO; 
    UIDevice *device = [UIDevice currentDevice]; 

    if (device != nil) 
    { 
     if ([device respondsToSelector:@selector(isMultitaskingSupported)] == YES) 
     { 
      #ifdef __IPHONE_4_0 
       #if (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_4_0) 
        result = [device isMultitaskingSupported]; 
       #endif 
      #endif 
     } 
     return(result); 
    } 
} 

这将在情况下设备返回布尔即真正支持多任务处理

相关问题