-(void)loadWebAdress:(NSString*)textAdress {
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
adressurl=[NSString stringWithFormat:@"http://%@", textAdress];
NSURL *url=[NSURL URLWithString:adressurl];
NSURLRequest *requestObj=[NSURLRequest requestWithURL:url];
[webview loadRequest:requestObj];
}
虽然url从adressurl获取它的值,但是在调试器中检查时,adressurl总是超出范围。到底是怎么回事?我也想在其他地方使用它。不仅仅是这种方法。因为超出范围,应用程序崩溃。但是,我再说一遍,就是那个给网址带来价值的人。
答案 0 :(得分:1)
这取决于声明adressurl
变量的位置。由于它是从方法参数生成的,因此您希望在代码中的其他位置使用它似乎很奇怪。如果你把它作为一个静态变量,它可能会被其他代码踩踏。 (例如,如果你在这个方法中将它设置为一个值,而在其他地方设置为另一个值,则发生崩溃并不罕见,特别是如果你不在两者之间进行协调或同步。避免全局/静态的一个原因。)你'如果愿意,可以自由地在不同的方法中使用相同的局部变量名。
以下是我建议做的事情:( 注意:我修正了一些拼写错误。)
- (void) loadWebAddress:(NSString*)textAddress {
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@", textAddress]];
[webview loadRequest:[NSURLRequest requestWithURL:url]];
}
这更短,避免了不必要的变量。由于“http://”前缀相当常见,因此似乎不会重复使用会带来很多好处。还有其他我想念的东西吗?
编辑:为了澄清我的评论中的拼写错误,您可以从UIWebView获取URL作为字符串,如下所示:
[[[webview request] URL] absoluteString]
这使用以下链接在一起的方法: