我想在我的应用程序的地图上添加此UI,以显示驾驶员当前驾驶的速度。我在main.m中收到这些错误。为什么,我该如何解决?
使用未声明的标识符'viewSpeed'
实例方法'-setViewSpeed:'未找到(返回类型默认为'id')
locationmanager.m
预期':' 预期方法体
预期的标识符或'(' 缺少'@end'
#import "locationManager.h"
@implementation locationManager
@synthesize locationManager;
@synthesize fastView;
- (id) init {
self = [super init];
if (self != nil) {
self.locationManager = [[[CLLocationManager alloc] init] autorelease];
self.locationManager.delegate = self; // send loc updates to myself
}
return self;
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
NSLog(@"Location: %@", newLocation description);
{
self.currentLocation = newLocation;
BOOL newLocationIsValid = [self isValidLocation:newLocation witholdLocation:oldLocation];
if(newLocationIsValid && oldLocation)
{
int distance = [newLocation distanceFromLocation:oldLocation];
if(distance >2 && distance<10)
{
[self.fastView setText:[NSString stringWithFormat:@"%i meters ", distance]];
}
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)errort
{
NSLog(@"Error: %@", [error description]);
}
@end
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
NSLog (@"%s", __func__);
}
的main.m
-(void)userDidLoagin
{
[self dismissViewControllerAnimated:YES completion:nil];
}
- (void)dealloc
{
[userMap release];
[_Speed release];
[viewSpeed release];
[_fastView release];
[super dealloc];
}
- (void)viewDidUnload
{
[userMap release];
userMap = nil;
[self setSpeed:nil];
[self setViewSpeed:nil];
[self setFastView:nil];
[super viewDidUnload];
}
答案 0 :(得分:3)
哇。您需要退回两步并查看basic architecture of iOS applications.
如果您声称在main.m中的代码确实在main.m中,那么您的应用根本就没有正确构建。实际上,在几乎所有iOS应用程序中,您根本不应该触摸main.m文件。那些显然是实例方法实现,这意味着它们应该在类的@implementation中。
答案 1 :(得分:1)
改变这个:
NSLog(@"Location: %@", newLocation description);
{
对此:
{
NSLog(@"Location: %@", newLocation);
(请注意,我已将其移至{
并移除descirption
)。
这将解决您遇到的错误。
答案 2 :(得分:0)
在我看来,viewSpeed不是一个属性,因为它没有合成,也没有以self开头。或_当它在dealloc中使用时。因此,您尝试调用的方法不存在。将该行更改为
viewSpeed = nil;
它应该解决你的问题。
编辑:没看到viewSpeed也未声明。您需要将其声明为ivar或财产。话虽如此,在您发布的代码中,您似乎无法在任何地方使用它,那么为什么还要放弃它并将其设置为nil?您的@end似乎也放错了地方,它位于“locationManager:”方法之上。