如何在 xcode 中显示 NSTimer 的 webrequest 加载时间?

Posted

技术标签:

【中文标题】如何在 xcode 中显示 NSTimer 的 webrequest 加载时间?【英文标题】:How to display NSTimer for a webrequest loading time in xcode? 【发布时间】:2010-09-20 05:47:59 【问题描述】:

我需要在后台显示一个计时器,用于以分钟:秒格式的 webrequest 加载时间。当 webrequest 成功加载时,计时器必须停止。我的代码在这里:

@interface TimerWithWebrequestViewController : UIViewController 
    IBOutlet UIWebView *webView;
    IBOutlet UILabel *lbl;
    int mainInt;
    NSTimer *randomMain;

@property(nonatomic,retain) UIWebView *webView;
-(void)upDate;
@end

@implementation TimerWithWebrequestViewController
@synthesize webView;
-(void)viewDidLoad

 NSString *urlAdd = @"http://www.google.com";
 NSURL *url = [NSURL URLWithString:urlAdd];
 NSURLRequest *reqObj = [NSURLRequest requestWithURL:url];
 [webView loadRequest:reqObj];
 [self performSelectorInBackground:@selector (upDate) withObject:nil];


-(void)upDate

 mainInt = 0;
 randomMain = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(randomMainVoid) userInfo:nil repeats:YES];


-(void)randomMainVoid
 mainInt += 1;
 lbl.text = [NSString stringWithFormat:@"%d",mainInt];


【问题讨论】:

不要在 Stack Overflow 上使用“代码”标签。改用“101010”按钮格式化代码。 【参考方案1】:

NSTimer 不是该作业的正确工具,因为该类要求您指定时间间隔。你想要做的是运行一个“秒表”。您可以通过实现以下UIWebViewDelegate 方法在加载开始和完成时保存时间戳来实现此目的:

- (void)webViewDidStartLoad:(UIWebView *)webView;
- (void)webViewDidFinishLoad:(UIWebView *)webView;
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;

您可以使用NSDate 作为此时间戳(调用[NSDate date]),使用time(3) 函数等。取两个时间戳的差值即可得出您的时间间隔,即加载时间。

【讨论】:

以上是关于如何在 xcode 中显示 NSTimer 的 webrequest 加载时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 7 中超过 180 秒的后台运行 NSTimer?

从 UIPickerView 中选择的 NSTimer 在 UILabel 中显示秒数

使用 NSTimer 制作闹钟

使用 NSTimer 的秒表错误地在显示中包含暂停时间

如果某个动作正在运行,如何设置 NSTimer 停止?

如何在 Xcode 中不释放视图