一元减2的类型参数错误



我在WhereamiAppDelegate.m文件中收到此错误:

#import"WhereamiAppDelegate.h"@实现WhereamiAppDelegate@合成窗口;#杂注标记-#pragma标记应用程序生命周期-(BOOL)应用程序:(UIApplication*)应用程序didFinishLaunchingWithOptions:(NSDictionary*)launchOptions{//创建位置管理器对象-locationManager=[[CLLocationManager alloc]init];//使WhereamiAppDelegate的此实例成为委托//它将向我们的WhereamiAppDelegate发送消息[locationManager setDelegate:self];//我们希望位置经理提供所有结果[locationManager setDistanceFilter:kCLDistanceFilterNone];//我们希望它尽可能准确,无论如何//需要花费大量时间/精力[locationManager setDesiredAccurcy:kCLLocationAccuracyBest];//告诉我们的经理立即开始寻找它的位置[locationManager startUpdatingLocation];[locationManager startUpdatingLocation];-(void)mapView:(MKMapView*)mv didUpdateUserLocation:(MKUserLocation*)userLocation{MKCoordinateRegion region=MKCoordinationRegionMakeWithDistance([userLocation坐标],250250);[mv setRegion:区域动画:是];}如果(TARGET_IPHONE_SIMULATOR){[newLocation initWithLatitude:37.3168900经度:-122.03073100];}[mapView setShowsUserLocation:YES];-(void)mapView:(MKMapView*)mv didAddAnnotationViews:(NSArray*)视图{MKAnnotationView*annotationView=[views-objectAtIndex:0];id,MKAnnotation>mp=[注释视图注释];MK坐标区域=MK坐标区域MakeWithDistance([mp坐标],250250);[mv setRegion:区域动画:是];}[self.window makeKeyAndVisible];返回YES;}-(void)位置管理器:(CLLocationManager*)管理器didUpdateToLocation:(CLLocations*)newLocationfromLocation:(CLLocation*)oldLocation{NSLog(@"%@",newLocation);}-(void)locationManager:(CLLocationManager*)manager didFailWithError:(NSError*)error{NSLog(@"找不到位置:%@",错误);}-(void)applicationWillResignActive:(UIApplication*)应用程序{/*当应用程序即将从活动状态移动到非活动状态时发送。这可能发生在某些类型的临时中断(如来电或SMS消息),或者当用户退出应用程序并开始过渡到后台状态时。使用此方法可以暂停正在进行的任务,禁用计时器,并降低OpenGL ES帧速率。游戏应使用此方法暂停游戏。*/}-(void)applicationDidEnterBackground:(UIApplication*)application{/*使用此方法可以释放共享资源、保存用户数据、使计时器无效,并存储足够的应用程序状态信息,以便在以后终止应用程序时将其恢复到当前状态。如果您的应用程序支持后台执行,则在用户退出时调用而不是applicationWillTerminate:。*/}-(void)applicationWillEnterForeground:(UIApplication*)application{/*作为从后台转换到非活动状态的一部分调用:在这里,您可以撤消在进入后台时所做的许多更改。*/}-(无效)应用程序DidBecomeActive:(UIApplication*)应用程序{/*重新启动应用程序处于非活动状态时暂停(或尚未启动)的任何任务。如果应用程序以前处于后台,则可以选择刷新用户界面。*/}-(void)applicationWillTerminate:(UIApplication*)应用程序{/*在应用程序即将终止时调用。另请参阅applicationDidEnterBackground:。*/}#杂注标记-#pragma标记内存管理-(void)applicationDidReceiveMemoryWarning:(UIApplication*)application{/*通过清除稍后可以重新创建(或从磁盘重新加载)的缓存数据对象,释放尽可能多的内存。*/}-(无效)解除锁定{[窗口释放];[超级解除锁定];}@end

造成问题的两种方法是:

-(void)mapView:(MKMapView*)mv didUpdateUserLocation:(MKUserLocation*)userLocation{MKCoordinateRegion region=MKCoordinationRegionMakeWithDistance([userLocation坐标],250250);[mv setRegion:区域动画:是];}如果(TARGET_IPHONE_SIMULATOR){[newLocation initWithLatitude:37.3168900经度:-122.03073100];}[mapView setShowsUserLocation:YES];-(void)mapView:(MKMapView*)mv didAddAnnotationViews:(NSArray*)视图{MKAnnotationView*annotationView=[views-objectAtIndex:0];id,MKAnnotation>mp=[注释视图注释];MK坐标区域=MK坐标区域MakeWithDistance([mp坐标],250250);[mv setRegion:区域动画:是];}

生成"一元减2的错误类型参数"错误。

你能告诉我问题出在哪里吗?

TIA-

您的-mapView:didUpdateUserLocation:method:的主体周围似乎缺少一些{括号}

- (void)mapView:(MKMapView *)mv didUpdateUserLocation:(MKUserLocation *)userLocation 
{
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([userLocation coordinate], 250, 250);
[mv setRegion:region animated:YES];
}
if(TARGET_IPHONE_SIMULATOR){
[newLocation initWithLatitude:37.33168900 longitude:-122.03073100];
}
[mapView setShowsUserLocation:YES];

应该是:

- (void)mapView:(MKMapView *)mv didUpdateUserLocation:(MKUserLocation *)userLocation 
{
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([userLocation coordinate], 250, 250);
[mv setRegion:region animated:YES];
if(TARGET_IPHONE_SIMULATOR){
[newLocation initWithLatitude:37.33168900 longitude:-122.03073100];
}
[mapView setShowsUserLocation:YES];
}

最新更新