夫妻Obj C问题包括错误

时间:2011-09-28 16:26:39

标签: iphone ios

所以基本上在我放在下面的代码中有一些我想要完成的事情。 1)在第一个中,我希望文本字段在按下完成后关闭,但它没有这样做。 (在其他论坛上找到该代码)。 2)在按下第一个按钮时,我希望它在发布按钮时发送保存时间。 3)在释放该按钮时,我希望它计算两次之间的时间以及稍后的其他一些计算。

我主要遇到的问题是来自NSTimeInterval的错误。它一直告诉我NSTimeInterval与NSTimeInterval类型不兼容。所以双重与双重不兼容??? (我也尝试过在.h中使用NSTimeInterval * timePassed并尝试将timePassed设置为它并且它也不起作用。发生类似的错误。

#import "MphViewController.h"

@implementation MphViewController
@synthesize speed, distance;

- (BOOL)textFieldShouldReturn:(UITextField *)textField{
    [textField resignFirstResponder];
    return YES;
}

-(IBAction)triggerDown:(id)sender{

    timeStart = [NSDate date];

}

-(IBAction)triggerUp:(id)sender{
    NSInteger *dist;
    NSString *display;
    NSTimeInterval *timePassed = [timeStart timeIntervalSinceNow];
    if ([distance.text length]== 0) {
        display = @"Please enter a distance";
    }
    else{
        dist = atoi(distance.text);
        display = [[NSString alloc] initWithFormat:@"%d MPH",dist];
    }
    speed.text = display;


    [display release];
}

此外,如果您有机会浏览其他声明。我不确定这是否会起作用(看到是在我输入距离之后我仍然无法摆脱数字键盘)。我想在计算出要显示在屏幕上的mph后再通过mph。与如何在obj c上进行解析非常混淆。无论如何,感谢任何和所有的帮助。

至于textField部分。我分配给它的textField是距离。那个Bool应该用不同的方式写成它的距离还是只是它应该写的方式?

1 个答案:

答案 0 :(得分:1)

您将原始类型表示为不需要的指针。从*NSInteger声明中删除星标(NSTimerInterval)。 if检查看起来很好但不是atoi而是使用:

dist = [distance.text integerValue];

编辑: 请注意几个内存管理问题。

1。确保正确保留/释放日期,然后在dealloc中释放它。

-(IBAction)triggerDown:(id)sender{
    [timeStart release];
    timeStart = [[NSDate alloc] init];
}

2。你的if语句将导致尝试释放一个NSString文字,它可能不会崩溃但是内存管理不正确。只需使用自动释放的字符串并删除[display release];

即可
...
else{
        dist = [distance.text integerValue];
        display = [NSString stringWithFormat:@"%d MPH",dist];
    }
    speed.text = display;
}