- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我注意到我的整个应用程序在使用一段时间后变得 react 迟钝。我打开仪器并决定做一些测试,主要是关于内存和 CPU 使用率。我将我的应用程序与 Twitter 应用程序进行了比较,因为后者同时使用 UITableView
和 tableView 中的图像,这与我的应用程序非常相似。我对仪器完全陌生,因此必须使用我对 iPhone 工作原理的非常基本的了解来弄清楚所有指示的内容。
我的内存使用情况似乎很好,因为这两个应用程序惊人地相似。我的应用程序经过大量使用后,在这个阶段非常滞后:真实内存:55.63,虚拟:152.03。推特:真实:58.42,虚拟:192.89。 Twitter 应用程序,尽管使用了更多内存,但仍然非常灵敏(我不会说 super 灵敏,仍然有一些紧张的时刻)。关闭后,我转向 CPU。
现在这就是它变得奇怪的地方。 Twitter 应用程序使用非常少量的 CPU(即使它比我的应用程序稍微密集一些)。当什么都没有发生时,CPU 使用率下降到 ~0%。它跳了几次,这与应用程序变得有点迟钝的时间相吻合。然而,我的应用程序是一个巨大的 CPU pig !当什么都没有发生时,我的应用程序使用 100% 的已用 CPU,大约是 80%-100%。换句话说,当读取 Activity Monitor Instrument 上的条形图时,系统负载不会在 UITableView
空闲时减少,而这正是 Twitter 应用程序正在做的。
因此,我认为这就是该应用变得无响应/滞后的原因。问题是,我不知道如何解决这个问题。
这是我能想到的:
- 我做了一大堆异步网络请求。然而,这并不能解释为什么 CPU 使用率一直居高不下,因为请求通常会在一秒钟内完成,并且很快就会下载和解析 JSON。
- 我在每个单独的网络请求完成后重新加载 TableView。但是,如上所述,这是在下载最后一个 JSON 的同时完成的,因此没有理由导致 CPU 使用率飙升。
- 在我的单元格配置中完成大量计算。不过和前两者一样,也没有太多解释。
即使我切换到 UIViewController
,高负载仍然存在。 UIViewController
是起始 View Controller ,当应用程序首次启动时,它的负载为 0% 并无限期地保持在 0%。只有当 UITableViewController
加载时,加载才会跳起来,然后保持如上所述。因此,这个巨大的 CPU 使用率必须来自 UITableViewController
。
有人有什么想法吗?对不起,大量的文字墙。如果您需要我发布任何代码,请询问,我会做。
谢谢你的帮助,
问候,
迈克
最佳答案
在调试器中运行您的应用程序,并在运行缓慢时随机停止它。然后检查所有不同的线程在做什么。您可能很快就会发现一些您意想不到的事情,并且可能是罪魁祸首。
只需在调试器中按下暂停按钮,然后展开所有线程以显示调用堆栈。如果一个线程的调用栈只显示iOS的函数和方法,可以忽略。但是,如果它显示了您应用程序的某些方法,那么您想单击这些方法并进行调查:为什么该方法当前正在运行?为什么它卡在这条特定的线上?
这是一种穷人的性能调试方法。高级方法是使用 Instruments。
关于iphone - 带有 UITableViewController 的应用程序变得非常无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14123771/
我正在使用 Swift 制作一个应用程序,但遇到了一个问题:我有一个系统,人们可以在其中发布“帖子”,并对这些“帖子”发表评论。 为了显示这一点,我有一个 UITableViewController
用户点击“远程”按钮,然后加载以下 UITableViewController: 然后用户选择我调用的任何值: [self.navigationController popViewController
在我离开页面并使用 UITabBarController 返回后,我的 TableViewController 在页面顶部留下了一个空隙。在初始加载时它很好,只有当我离开页面然后返回时才会出现间隙。我
我有一个 TableViewController (VC1) 设置为推送到另一个 TableViewController (VC2)。这个连接是通过从 VC1 到 VC2 的 ctrl-drag 在
在我的核心数据模型中,我有一个 Person 实体,它与 Course 实体具有“对多”关系(我还具有从 Course 到 Person 的反向“对一”关系)。 现在我有一个子类化的 UITableV
为什么不调用 numberOfSectionsInTableView 方法?如果我在 viewDidLoad 中添加 [self.tableView reloadData],它就会被调用,但即便如此,
在 UITableViewController 中,我有一个方法可以更新显示总价的底部工具栏。 public override UITableViewCell GetCell(UITa
我正在制作一个 iPad 应用程序,其中包含一个用于设置选项的 View 。这个“选项” View 有两个容器 View ,每个容器 View 都包含一个 TableView,其中包含两种不同的选项,
假设设置是 导航 Controller -> GradLevelUITableViewController -> DegreeUITableViewController -> View Control
我的问题是,这是否可能,如果可能,您将如何完成这项任务? 有人知道已经在使用此功能的应用程序,或者可以从哪里获得一些示例代码吗? 此外,如果我要在对主题了解不多的情况下自行实现此操作,您估计需要多长时
当 UITableViewController 的框架低于特定高度时,UITableViewController refreshControl 会出现问题。 就目前而言,我有一个 UIViewCont
我有我的主视图和一个 RoutinesTableViewController。 我想放松回到我的 VC 并尝试了这个: @IBAction func selectRoutine(segue:UISto
我是 swift 和 Xcode 的新手,我正在尝试一些事情。当我转到设置页面时,我想在设置页面(在应用程序中,而不是在设置 bundle 中)设置开关状态。 (我将segue设置为push)为此,我
我目前正在尝试将不同的实体从我的 CoreData 模型加载到一个 UITableView 中,但位于不同的部分下。我尝试过以下方法: override func tableView(tableVie
我试图让 tableview 适应 Swift 中键盘的显示。根据文档,如果 tableview 是 UITableViewController 的子类,它应该自动调整。已经在这里阅读了很多答案,只是
我想捕获UITableViewController中触摸点的x位置。网上描述的最简单的解决方案是UITapGestureRecognizer:enter link description here 但
我是 iPhone 编程的初学者。我的第一个应用程序是 UITableViewController 但现在我想尝试一下。这个想法是创建一个如下所示的自定义布局: 布局: ---------------
我有一个基于导航的应用程序,我将 UITableViewControllers 推送到堆栈上。我想向我的所有 UITableViewControllers 添加背景 UImage。不是 UIColor
在找到位置后,我尝试在 UITableViewController 中重新加载数据。这也意味着在 viewDidLoad 方法之后。我的类正在使用此接口(interface)扩展 UITableVie
我有一个TabBarController,其中一个选项卡包含一个 subview ,它是一个navigationController。然后,我将继承 UITableViewController 形式的
我是一名优秀的程序员,十分优秀!