我猜error太强了,因为它完全按照我想要的方式工作,但我收到了一条令人担忧的警告消息。我正在向TabBarController添加一个UIViewController,所有我想要做的就是显示地图视图,然后当用户单击该选项卡时放大用户。我构建了xib,我所做的唯一编辑工作就是将一个MKMapView拖到上面并连接到插座和代理。除此之外,下面是所有的实现代码:
- (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”的局部声明隐藏了实例变量。“
然而,当我运行这个应用程序时,它似乎工作正常。这个错误可能指的是什么?
发布于 2011-08-04 07:19:54
这是因为您将MKMapView对象声明为mapView。看一下方法声明:
- (void)mapView:(MKMapView *)mapView
它使用与您自己的变量相同的名称。这就是编译器似乎会遇到问题的地方。现在我自己也遇到过这种情况,我的解决方案是更改我的变量名(例如,您可以使用worldView )。
我想你也可以用self来解决这个问题。就像在其他语言中一样,你可以使用this.variableName,我想你可以做self.variableName来表明这个变量是‘你的’。如果这说得通的话?
当我声明我自己的方法时,我通常这样做:
- (void)feedDog:(Dog *)aDog;然后我的变量将被命名为Dog,以避免混淆。
这就是我所做的。如果任何人对此有任何补充,请随时提出。我对此还是个新手,但现在我确实遇到过几次这个错误。
发布于 2011-08-04 07:21:22
[self.mapView setRegion:region animated:YES];https://stackoverflow.com/questions/6934434
复制相似问题