如何在ios objective c中为位置跟踪器的重复执行创建后台服务 我通过web服务从GPS跟踪设备获取连续的位置坐标 我使用MKPointAnnotation以10.0秒的间隔连续绘制检索到的坐标

如何在ios objective c中为位置跟踪器的重复执行创建后台服务 我通过web服务从GPS跟踪设备获取连续的位置坐标 我使用MKPointAnnotation以10.0秒的间隔连续绘制检索到的坐标,ios,objective-c,multithreading,memory-management,background,Ios,Objective C,Multithreading,Memory Management,Background,我在解析时应用了GCD。 所以解析将在后台进行,UI更新将在主线程中进行 如下 调度异步(调度获取全局队列)( 调度队列优先级后台,0),^(无效) { //背景线程 //1# Get Location Coordinates [PARSING PART] NSArray *coordinateArray = geometryDictio[@"coor

我在解析时应用了GCD。 所以解析将在后台进行,UI更新将在主线程中进行 如下

调度异步(调度获取全局队列)( 调度队列优先级后台,0),^(无效) { //背景线程

                                     //1# Get Location Coordinates [PARSING PART]
                                    NSArray *coordinateArray = geometryDictio[@"coordinates"];


                                    NSString *latitude = [coordinateArray objectAtIndex:1];
                                    NSString *longitude = [coordinateArray objectAtIndex:0];

                                    double latitudeDouble = [latitude doubleValue];
                                    double longitudeDouble = [longitude doubleValue];



                                    dispatch_async(dispatch_get_main_queue(), ^(void)
                                    {
                                        //Run UI Updates

                                        //1# Get Location Coordinates [UI PART]
                                        // Remove
                                        [self removeAnnotation];
                                        // Add new
                                        [self plotPoint:latitudeDouble :longitudeDouble];


                                    });

                                    });
  • 之后,我对上面的部分应用了10.0秒的定时器,并在viewDidLoad中执行了如下操作

    • 我还清除了所有未使用的变量
    • 在应用程序中一切正常,我得到了准确的坐标并成功地在地图上绘制
    • 定时器也工作正常
    -但问题是应用程序在一段时间后变慢。如果我连续运行1-2小时。

    • 请推荐内存优化技术
    • 请建议除viewdidload之外的任何调用计时器的替代方案
    • 请建议在一段时间后释放变量的任何灵活方式[在默认时间后清除内存]

    • 任何帮助都将不胜感激


    您可以在任何其他生命周期方法中,或在我执行PARSING的相同方法中,将variables设置为nil。您可以在VIEWWILLENGISE方法中设置为nil。尽管这样做并不合适,因为ARC禁止释放变量,请使用时间分析器工具确定您的应用程序在何处花费时间。
    [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(handleTimer:) userInfo:nil repeats:YES];