Iphone 控件可能会到达非void函数的末尾
我不知道为什么xcode会显示此消息,请看一下我的代码:Iphone 控件可能会到达非void函数的末尾,iphone,objective-c,xcode,ios5,Iphone,Objective C,Xcode,Ios5,我不知道为什么xcode会显示此消息,请看一下我的代码: - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation{ if (annotation==self.mapView.userLocation) { return nil; NSString *pinID = @"Salvar";
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation{
if (annotation==self.mapView.userLocation) {
return nil;
NSString *pinID = @"Salvar";
MKPinAnnotationView *view = (MKPinAnnotationView*)
[self.mapView dequeueReusableAnnotationViewWithIdentifier:pinID];
if (view==nil) {
view = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:pinID];
view.canShowCallout = YES;
view.animatesDrop = YES;
}
return view;
}
}
-(MKAnnotationView*)地图视图:(MKMapView*)地图视图注释:(id)注释{
if(annotation==self.mapView.userLocation){
返回零;
NSString*pinID=@“Salvar”;
MKPinAnnotationView*视图=(MKPinAnnotationView*)
[self.mapView dequeueReusableAnnotationViewWithIdentifier:pinID];
如果(视图==nil){
视图=[[MKPinAnnotationView alloc]initWithAnnotation:annotation重用标识符:pinID];
view.canShowCallout=是;
view.animatesDrop=是;
}
返回视图;
}
}
如果注释=self.mapView.userLocation
若要修复,请将else块添加到第一个条件,或在最后一个close curly之前无条件返回某个内容
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation{
if (annotation==self.mapView.userLocation) {
// the code that you have already here
} else {
return nil; // or whatever you would return if annotation!= userLocation
}
// or, instead of the else above...
return nil;
}
-(MKAnnotationView*)地图视图:(MKMapView*)地图视图注释:(id)注释{
if(annotation==self.mapView.userLocation){
//你已经在这里的代码
}否则{
返回nil;//或者如果annotation!=userLocation,则返回任何内容
}
//或者,代替上面的其他内容。。。
返回零;
}
是的,如果在这种情况下它应该返回这样的值。讨论指针时,正确的归零方法是“nil”。代码中还有另一个问题。在第三行,您有返回nil
。这意味着if语句中的任何代码都不会运行,因为它总是在return nil
处退出整个方法。我应该把它去掉吗?最终我无法回答这个问题,因为只有你才能说出你想要的逻辑。如果希望在annotation==self.mapView.userLocation时始终返回nil,则可以在返回nil后删除If块中的所有代码。如果您想运行它下面的所有代码,则应该删除return nil
。另外,请注意annotation==self.mapView.userLocation
仅测试两个引用是否指向内存中的同一位置(两个变量引用的是完全相同的实例)。如果变量引用的两个不同实例在其他方面相等,则测试仍将返回false。我认为您可能想要的是if([annotation isEqual:self.mapView.userLocation]){