вопрос про iOS Core Location GPS - PullRequest
0 голосов
/ 12 октября 2011

При инициализации нового класса, какие методы этого класса будут выполняться автоматически. Пожалуйста, посмотрите на коды ниже:

CoreLocationDemoViewController.m

- (void)viewDidLoad {
    NSLog(@"CORE_LOCATION_DEMO_VIEW_CONTROLLER=======>VIEW_DID_LOAD");
    [super viewDidLoad];

    CLController = [[CoreLocationController alloc] init]; // line 1
    CLController.delegate = self;                         // line 2
    [CLController.locMgr startUpdatingLocation];
}

CoreLocationController.m

- (id)init {
    NSLog(@"CORE_LOCATION_CONTROLLER=======>INIT"); 
}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
   NSLog(@"CORE_LOCATION_CONTROLLER=======>DID_UPDATE_TO_LOCATION");
}

От отладки получил

2011-10-11 23:44:31.682 CoreLocationDemo[77470:207] CORE_LOCATION_CONTROLLER=======>INIT
2011-10-11 23:44:31.707 CoreLocationDemo[77470:207] CORE_LOCATION_CONTROLLER=======>DID_UPDATE_TO_LOCATION

Кажется, что init и locationManager выполняются автоматически ... Я не уверен в этом ...

Другой вопрос в строке 2, что

CLController.delegate = self ( delegate is declared as  id delegate  in CoreLocationController.h )

делает

Пожалуйста, помогите, если вы испытывали раньше, и все комментарии приветствуются здесь

1 Ответ

0 голосов
/ 12 октября 2011

init () вызывается из-за этого

CLController = [[CoreLocationController alloc] init];

didUpdateToLocation вызывается из-за этого как обратный вызов делегата

[CLController.locMgr startUpdatingLocation];

Как замечание, я не замечаю и вашего initвызывает super init и не возвращает себя.Я предполагаю, что вы урезали это для должности.

...