为什么我在iOS应用程序中收到所有这些编译错误?

时间:2013-07-11 01:02:30

标签: ios objective-c

我想在我的应用程序的地图上添加此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];
}

3 个答案:

答案 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:”方法之上。