代码之家  ›  专栏  ›  技术社区  ›  Tirth

如何在uiviewController类方法中调用nsObject方法?

  •  0
  • Tirth  · 技术社区  · 14 年前

    我是iPhone开发的初学者。 我开发了一个应用程序,在clsgps中调用了一些与GPS相关的信息(方法名为getgpsinformation),这是一个纯nsObject类,代码如下:

    #import "clsGPS.h"
    
    -(void)getGPSInformation
    {
        locationManager = [[CLLocationManager alloc ] init];
        locationManager.delegate = self;
        locationManager.distanceFilter = 5.0f;
        locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
        [locationManager startUpdatingLocation];    
    }
    

    我希望在uiviewController类中调用上述方法。如何在uiviewController类中调用此方法,以便在应用程序启动时自动调用此方法? 我应该在viewdidload事件中调用该方法还是viewwillappear方法?

    1 回复  |  直到 14 年前
        1
  •  0
  •   duncanwilcox    14 年前

    在启动时放置要加载的代码的最佳位置是 -applicationDidFinishLaunching: 应用程序委托的方法。应用程序委托是从Xcode项目模板之一开始创建的所有项目的一部分。

    一个gotcha是默认的.png初始屏幕将持续到 -应用程序完成启动: 返回,因此您可以调用 -getGPSInformation 方法,类似于:

    [self performSelector:@selector(getGPSInformation)
          withObject:nil
          afterDelay:0.1];
    

    这样做的效果是将方法调用放到事件队列上,立即返回,并在十分之一秒后调用位置管理器初始化。

    如果要在加载视图控制器时调用某个对象, -viewDidLoad 是个不错的选择。但是,视图控制器也可以卸载,因此locationManager对象将被多次初始化(并可能泄漏,代码如上)。 视图加载 通常用于调整刚加载的.xib接口文件的内容或与UI相关的内容。

    -viewWillAppear 每次你导航(向前或向后)到视图控制器时都会调用,所以这绝对不是你想要的位置管理器。