0
votes

Trying to add some annotations for a MapView, but keep getting an ARC Semantic issue: 'No visible @interface for 'MKPointAnnotation' declares the selector initWithTitle:andCoordinate:

I'm fairly new to this so don't really know what it means, if anyone could explain/correct it i'd be grateful.

Here is my viewDidLoad method:

- (void)viewDidLoad
{
    CLLocationCoordinate2D location;
    location.latitude = (double) 51.501468;
    location.longitude = (double) -0.141596;

    MKPointAnnotation *newAnnotation = [[MKPointAnnotation alloc] initWithTitle:@"Buckingham Palace" andCoordinate:location];
    [self._mapView addAnnotation:newAnnotation];

}

and my header file:

#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>

@interface MapViewAnnotation : NSObject <MKAnnotation> {

NSString *title;
CLLocationCoordinate2D coordinate;

}

@property (nonatomic, copy) NSString *title;
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;

- (id)initWithTitle:(NSString *)ttl andCoordinate:(CLLocationCoordinate2D)c2d;

@end
2
Please tag properly in future.yinkou

2 Answers

3
votes

The initWithTitle:andCoordinate method you created is a method of MapViewAnnotation rather than MKPointAnnotation.

You probably want:

MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"Buckingham Palace" andCoordinate:location];
[self._mapView addAnnotation:newAnnotation];
0
votes

It's trying to tell you it can't find any method that matches the signature of initWithTitle:andCoordinate:

MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];
[annotation setCoordinate:coordinate];
[annotation setTitle:@"Buckingham Palace"];