【发布时间】:2012-12-04 03:15:03
【问题描述】:
我为 iPhone 制作了一个应用程序。现在,我正在为 iPad 重新创建它。
当用户选择工具栏中的操作按钮时,弹出框应显示UIActivityViewController,但由于某种原因,第一次显示大约需要 10 秒。在 iPhone 上,大约需要一秒钟。除了弹出框之外,它是相同的代码。
我尝试禁用弹出框,但仍然需要大约 10 秒才能显示。
代码如下:
-(IBAction)Actions:(UIBarButtonItem*)sender
{
if ([activityPopover isPopoverVisible] == YES)
{
[activityPopover dismissPopoverAnimated:YES];
return;
}
UIWebView *currentWebView = ((TabView *)self.tabs[self.currentTabIndex]).webViewObject;
NSString *currentURL = (NSString*)[currentWebView request].mainDocumentURL;
if (currentURL == NULL) return;
BookmarkActivity *bookmarkActivity = [[BookmarkActivity alloc] init];
UIActivityViewController *sharing = [[UIActivityViewController alloc] initWithActivityItems:[NSArray arrayWithObject:currentURL] applicationActivities:@[bookmarkActivity]];
activityPopover = [[UIPopoverController alloc] initWithContentViewController:sharing];
[activityPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}
我已经在我的 iPad 3 和 iPad mini 上进行了测试,都需要一段时间来展示这个。
我该如何解决这个问题?
【问题讨论】:
-
你用时间分析器测试过吗?您可能会发现最耗时的指令是什么。
-
按 cmd+I 然后选择时间分析器。等待 10-20 秒。然后选中“隐藏系统库”选项。这将使您在调用堆栈中更好地查看您的方法。找到您的调用栈中的方法,点击两次,就可以看到耗时了。
-
您应该会看到类似这样的内容:imageshack.us/f/803/screenshot20121217at235.png 告诉我们耗时或发布图片。
-
在
activityPopover = [[UIPopoverController alloc] initWithContentViewController:sharing];上表示 85.7%,[activityPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];上表示 13.1% 和BookmarkActivity *bookmarkActivity = [[BookmarkActivity alloc] init];上表示 1.2% -
我没有,第一次由于某种原因仍然很慢,然后每次都很快。
标签: ios objective-c uipopovercontroller uiactivityviewcontroller