Ios swift应用程序电池电量非常高,cpu最小值为105%

Ios swift应用程序电池电量非常高,cpu最小值为105%,ios,Ios,我的swift 2应用程序的电池使用率非常高,最小cpu为105% 但首先不是全部 我有一个表视图控制器 从那里你可以去一个相机控制器-在那里你必须扫描条形码 如果检测到条形码,新的视图控制器将通过http post请求将条形码发送到my mysql数据库并获取信息 这些信息我将发送到最后一个视图控制器。(这是我的问题视图控制器,因为我的cpu将达到最低105%,电池使用率将非常高。从现在起,在我的完整应用程序中,我的cpu将始终保持在最低105%的状态,无论下一个是哪个视图控制器。) 这只是一

我的swift 2应用程序的电池使用率非常高,最小cpu为105% 但首先不是全部

  • 我有一个表视图控制器
  • 从那里你可以去一个相机控制器-在那里你必须扫描条形码
  • 如果检测到条形码,新的视图控制器将通过http post请求将条形码发送到my mysql数据库并获取信息
  • 这些信息我将发送到最后一个视图控制器。(这是我的问题视图控制器,因为我的cpu将达到最低105%,电池使用率将非常高。从现在起,在我的完整应用程序中,我的cpu将始终保持在最低105%的状态,无论下一个是哪个视图控制器。)
  • 这只是一个简单的静态表视图,其中将显示信息(2个字符串)。在那里,您可以单击“保存”,您的条目将显示在第一个表视图控制器中

    我已删除最后一个视图控制器的所有代码,使其为空。 此控制器中没有激活的功能

    但是cpu也会上升。 知道我该怎么检查cpu为什么会上升吗

    更新

    在我的http post请求控制器中(3) 这个代码是:

    override func viewWillAppear(animated: Bool) {
       self.LoadingCircle.rotate360Degrees(completionDelegate: self)
       self.isRotating = true
    }
    
    旋转360度延伸

    extension UIView {
        func rotate360Degrees(duration: CFTimeInterval = 2.5, completionDelegate: AnyObject? = nil) {
            let rotateAnimation = CABasicAnimation(keyPath: "transform.rotation")
            rotateAnimation.fromValue = 0.0
            rotateAnimation.toValue = CGFloat(M_PI * 2.0)
            rotateAnimation.duration = duration
    
            if let delegate: AnyObject = completionDelegate {
                rotateAnimation.delegate = delegate
            }
            self.layer.addAnimation(rotateAnimation, forKey: nil)
        }
    }
    

    如果我删除视图中的代码将显示部分,cpu将保持“正常”

    在您的情况下,委托是不必要的,实际上它将导致此代码在多个实例中运行,这将增加您的cpu使用率


    如果要重复事件,可以设置
    .repeatCount=.infinity

    是否可以提供相同的代码或正在执行的操作的详细信息?特别是,图像处理、动画、递归代码、事件……好的,我找到了问题所在的代码。我将在几秒钟后在我的第一篇帖子中更新更多信息。该代表的目的是…?对不起?什么意思?此扩展为我包含在该视图控制器中的图像设置动画,并将其旋转360度。动画停止时是否重复此动画?我的问题是你在委托函数中处理的是什么?谢谢这个注释-但是我如何以编程方式停止动画?你必须调用removeAllAnimations(),我认为在swift中会是这样的,self.LoadingCircle.view.layer.removeAllAnimations(),好的,我尝试self.LoadingCircle.layer.removeAllAnimations()(使用view参数它不起作用)但动画不会停止好的,它会停止。但是如果执行此代码部分,我的图像在停止之前会死记硬背5-6倍以上。我在这里测试了调用一个按钮self.LoadingCircle.layer.removeAllAnimations()如果有延迟,它会立即工作,请尝试在主队列内部调用dispatch_async(dispatch_get_main_queue()){()->Void in self.LoadingCircle.layer.removeAllAnimations()}