2011-09-28 55 views
0

所以基本上在这个代码我放在下面有一些事情我想完成。 1)在那第一个我想要文本字段完成后按下,但它不这样做。 (在其他论坛上找到该代码)。 2)在按下第一个按钮时,我希望发送按钮释放时保存的时间。 3)释放该按钮后,我希望计算两次之间的时间以及其他一些计算。夫妇对象C问题包括一个错误

问题,我主要是在这里是从NSTimeInterval错误。它一直告诉我NSTimeInterval与NSTimeInterval类型不兼容。所以一个双不兼容的双??? (我也有NSTimeInterval * timePassed试图在h和只是想设置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]; 
} 

此外,如果你有机会一览在else语句中,我不确定这是否会起作用(看到的是在我进入距离之后,我仍然无法摆脱数字键盘),但是一旦它计算出来,就会通过mph显示在屏幕上。非常困惑与如何解析完成obj c。无论如何感谢任何和所有的帮助

至于textField部分。或者仅仅是它的方式写成书面?

回答

1

您将原始类型指示为不需要的指针。从NSIntegerNSTimerInterval声明中删除星号(*)。该支票是否看起来不错,但代替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; 
} 
+0

谢谢,完美的工作:)。只是想知道你是否有任何想法可能会出现问题的文本字段? – steven

+0

你问关于'textFieldShouldReturn:'?因为该代码是正确的。 – Joe

+0

另外我只是注意到一个内存管理问题,你需要保留timeStart,调用'[timeStart release];'然后'timeStart = [[NSDate alloc] init];' – Joe