nsstring - 超出范围

时间:2010-05-17 18:20:53

标签: objective-c

-(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总是超出范围。到底是怎么回事?我也想在其他地方使用它。不仅仅是这种方法。因为超出范围,应用程序崩溃。但是,我再说一遍,就是那个给网址带来价值的人。

1 个答案:

答案 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]

这使用以下链接在一起的方法: