目前我仍在阅读一些文档和教程NSTimer
。根据我目前的理解,我们调用计时器并给它一个方法,以便它会重复自己。然后我想到了一个想法。(我正在开发其他应用程序项目)
我打算做什么
- 实施
UIWebView
- 使用检查当前 url(绝对字符串)的方法在 中实现
NSTimer
(可能是 0.5 秒),如果它不是我指定的,它将重定向 url。UIWebView
UIWebView
我有我想要实现的代码,目的是纠正我的知识,UIWebView
并NSTimer
在我开始工作之前看看它是否合理。(我仍在阅读文档。所以想了解更多并尝试更多在工作之前)
现在让我感到困惑的是,我的方法是否兼容NSTimer
?NSTimer
在方法中使用是否合理UIWebView
viewDidLoad
?由于应用程序每 0.5 秒不断运行该方法,是否会出现内存过载/崩溃?
例如NSTimer
(如果我错了,请纠正我。但由于我希望它永远运行,只要用户在其中UIWebView
,我将只需要此代码集而不包括NSRunLoop
)
NSTimer *t = [NSTimer scheduledTimerWithTimeInterval: 2.0
target: self
selector:@selector(onTick:)
userInfo: nil repeats:NO];
-(void)onTick:(NSTimer *)timer {
//do smth
}
EDIT2-@Robert Ryan,这是我正在使用的代码。(当我第一次更改此代码时,它刚刚工作)**(如果我屏蔽了 range2 部分,那么错误域 error-999 停止了。但视图仍然不加载)
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *currentURL = [[request URL] absoluteString];
NSRange range1= [currentURL rangeOfString:@"news"];
NSRange range2= [currentURL rangeOfString:@"pdf"];
if (range1.location == NSNotFound)
{
NSURL *url = [NSURL URLWithString:@"http://www.imc.jhmi.edu/news.html"];
[webView loadRequest:[NSURLRequest requestWithURL:url]];
return NO; //no to this if its not found.
}
if(range2.location==NSNotFound)
{
NSURL * url = [NSURL URLWithString:@"http://www.imc.jhmi.edu/news.html"];
[webView loadRequest:[NSURLRequest requestWithURL:url]];
return NO; //no to this if its not found
}
return YES; //everything else ok
}
EDIT3 - 如果我将 NSRange range1 和 range2 组合成 1 个语句,那么它会再次工作(希望它在一个小时后仍然可以工作。xD)
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *currentURL = [[request URL] absoluteString];
NSRange range1= [currentURL rangeOfString:@"news"];
NSRange range2= [currentURL rangeOfString:@"pdf"];
if (range1.location == NSNotFound & range2.location==NSNotFound)
{
NSURL *url = [NSURL URLWithString:@"http://www.imc.jhmi.edu/news.html"];
[webView loadRequest:[NSURLRequest requestWithURL:url]];
return NO;
}
return YES;
}