Допустимо ли использовать почтовое уведомление для отслеживания обновлений местоположения

Можем ли мы использовать «уведомление о публикации» для обновлений местоположения, чтобы отобразить текущее местоположение на картах Google? Или какой-нибудь лучший способ реализовать, кроме этого? Хотя я не хочу использовать KVO для @"Mylocations" в googlemaps.

В LocationTracker.m

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
for(int i=0;i<locations.count;i++)
{
    CLLocation * newLocation = [locations objectAtIndex:i];
    CLLocationCoordinate2D theLocation = newLocation.coordinate;
    CLLocationAccuracy theAccuracy = newLocation.horizontalAccuracy;

    [PlacesDetails sharedInstance].theLocation=theLocation;
    if(newLocation != nil && (!(theLocation.latitude == 0.0 && theLocation.longitude == 0.0)))
    {
        self.myLastLocation = theLocation;
        self.myLastLocationAccuracy= theAccuracy;
// Below implemented the post notification
        [[NSNotificationCenter defaultCenter] postNotificationName:@"updateLocation" object:nil];
    }
}
} 

В ViewController.m

- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateGMSCameraPostition) name:@"updateLocation"       
object:nil];
}

-(void)updateGMSCameraPostition
{
  NSLog(@"CALLED UPDATELOCATION OBSERVER");
mapView_.camera = [GMSCameraPosition cameraWithTarget:[PlacesDetails sharedInstance].theLocation
                                                 zoom:14];}

person Ketan Shinde    schedule 01.08.2016    source источник
comment
Это законный способ передачи данных. Вызывается шаблоном наблюдателя, если вы хотите его найти.   -  person AMAN77    schedule 01.08.2016
comment
@ AMAN77 Я использовал шаблон KVO, но происходит сбой, и консоль сообщает, что GMSMapView был освобожден, в то время как наблюдатели значений ключей все еще были зарегистрированы с ним. Я реализовал то же самое, что указано в ссылке 'stackoverflow.com/questions/27193946/' и пробовал каждый решение оттуда же. Поэтому я решил не использовать KVO.   -  person Ketan Shinde    schedule 01.08.2016


Ответы (1)


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

  1. NSNotificationCenter также хорош, но вам нужно удалить наблюдателя в нужное время, если вы этого не сделаете, то могут сработать несколько уведомлений и вызвать жалкое поведение вашего приложения.
  2. KVO, Willchangevalueforkey, вы также можете использовать это, но все же вам нужно использовать это очень осторожно. Это также хорошо для измерения изменений.
  3. Шаблон делегата, вы также можете использовать шаблон делегата для этого.
  4. MVVM: - Если вы используете шаблон проектирования MVVM (Modal View-View Modal), то я бы посоветовал вам использовать блоки, это один из моих любимых способов.

Для блоков вы можете просмотреть эти ссылки.

Блокирует Apple Developer

Блокирует RyPress

Встроенные блоки

Я думаю, это может помочь вам.

person Sabby    schedule 01.08.2016
comment
Спасибо!! я меньше всего цепляюсь за блоки, я хотел бы это сделать :) скоро обновлю. - person Ketan Shinde; 01.08.2016
comment
Добро пожаловать @KetanShinde Ура - person Sabby; 01.08.2016