我正在构建一个iOS应用程序,并且需要能够在用户当前所在的位置放置一个引脚!出于某种原因,我一直在努力工作!我尝试了以下代码,但遇到了错误。
- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{
if (annotation == mapView.userLocation)
{
MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:nil];
annView.pinColor = MKPinAnnotationColorRed;
annView.animatesDrop=TRUE;
annView.canShowCallout = YES;
annView.calloutOffset = CGPointMake(-5, 5);
return annView;
[annView release];
}
}
错误是: 控制可以达到无效功能的结束。
非常感谢你的帮助! “ 欣赏它!
答案 0 :(得分:5)
以下代码在Xcode iPhone模拟器中运行良好:
#import "ViewController.h"
@import MapKit;
@interface ViewController () <MKMapViewDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self.mapView setDelegate:self];
[self.mapView setShowsUserLocation:YES];
}
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation {
// zoom to region containing the user location
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.coordinate, 800, 800);
[self.mapView setRegion:[self.mapView regionThatFits:region] animated:YES];
// add the annotation
MKPointAnnotation *point = [[MKPointAnnotation alloc] init];
point.coordinate = userLocation.coordinate;
point.title = @"The Location";
point.subtitle = @"Sub-title";
[self.mapView addAnnotation:point];
}
@end
答案 1 :(得分:0)
当一个方法有一个返回类型时,必须在所有条件下返回一些东西,你只返回if分支中的东西,否则返回。当if语句的计算结果为false时,编译器还要求您返回一些内容 - 这就是您收到编译错误的原因。
顺便提一下
[annView release];
永远不会被执行,因为你在此之前就已经回来了。但你有什么理由说这个吗?即试图使用非ARC代码?你有没有从某个地方复制这一行(这是旧代码)