我如何在UIViewController类方法中调用NSObject方法?

时间:2010-03-12 10:45:38

标签: iphone

我是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 个答案:

答案 0 :(得分:0)

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

一个问题是Default.png启动画面会一直持续到-applicationDidFinishLaunching:返回,因此您可以使用以下内容调用-getGPSInformation方法:

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

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

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

-viewWillAppear实际上是在您每次导航(前进或后退)到视图控制器时调用的,因此绝对不是您想要的位置管理器。