我猜错误太严重了,因为它的工作原理与我想要的完全一样,但我收到了一条令人不安的警告消息。我将 UIViewController 添加到 TabBarController,我想要它做的就是显示 map View ,然后在用户单击该选项卡时放大用户。我构建了 xib,我所做的唯一编辑是将 MKMapView 拖过来并连接 socket 和委托(delegate)。除此之外,这是所有的实现代码:
- (void)viewDidLoad
{
[super viewDidLoad];
[mapView setShowsUserLocation:YES];
}
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation {
CLLocationCoordinate2D loc = [userLocation coordinate];
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 250, 250);
[mapView setRegion:region animated:YES];
}
问题是我在最后一行收到黄色警报错误,显示““mapView”的本地声明隐藏了实例变量。”
但是,当我运行该应用程序时,它似乎工作正常。这个错误可能指的是什么?
最佳答案
发生这种情况是因为您将 MKMapView 对象声明为 mapView
。看一下方法声明:
- (void)mapView:(MKMapView *)mapView
它使用与您自己的变量相同的名称。这就是编译器似乎遇到问题的地方。我自己已经遇到过几次这种情况,我的解决方案是更改我的变量名称(例如,您可以使用 worldView)。
我想你也可以用 self 来解决。与其他语言一样,您可以使用 this.variableName
,我认为您可以使用 self.variableName
来指示这是“您的”变量。如果这有意义吗?
当我声明自己的方法时,我通常这样做:
- (void)feedDog:(Dog *)aDog;
然后我的变量将被称为Dog
以避免混淆。
这就是我所做的。如果有人对此有任何补充,请随时补充。我对此还很陌生,但我现在确实遇到过这个错误几次。
关于iphone - MKMapView错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6934434/