所以基本上在我放在下面的代码中有一些我想要完成的事情。 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应该用不同的方式写成它的距离还是只是它应该写的方式?
答案 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;
}