2010-05-17 8 views
0
-(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]; 
} 

Bien que l'URL prenne sa valeur à partir d'adressurl, adressurl est tout le temps hors de portée lors de la vérification dans le débogueur. que se passe-t-il? Je voudrais l'utiliser dans d'autres endroits aussi. non seulement dans cette méthode. car il est hors de portée, l'application se bloque. Mais, je le répète, c'est celui qui donne sa valeur à url.nsstring - hors de portée

+1

Où 'addressurl' est-il déclaré? – Chuck

Répondre

1

Cela dépend de l'endroit où la variable adressurl est déclarée. Comme il est généré à partir du paramètre method, il semble étrange que vous vouliez l'utiliser ailleurs dans le code. Si vous l'avez en tant que variable statique, il pourrait être piétiné par un autre code. (Par exemple, si vous le définissez sur une valeur dans cette méthode et une autre ailleurs, il n'est pas inhabituel d'avoir des plantages, surtout si vous ne coordonnez pas ou ne synchronisez pas entre les deux.) Une raison d'éviter les globals/statiques. re libre d'utiliser le même nom de variable locale dans différentes méthodes si vous le souhaitez.

Voici ce que je vous suggère de faire à la place: (Note: J'ai quelques fautes de frappe fixé.)

- (void) loadWebAddress:(NSString*)textAddress { 
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; 
    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@", textAddress]]; 
    [webview loadRequest:[NSURLRequest requestWithURL:url]]; 
} 

est plus courte, et évite les variables inutiles. Étant donné que le préfixe "http: //" est assez commun, il ne semble pas que la réutilisation apporte autant d'avantages. Y a-t-il autre chose qui me manque?


Edit: Pour clarifier une faute de frappe dans mon commentaire, vous pouvez obtenir l'URL comme une chaîne de la UIWebView comme suit:

[[[webview request] URL] absoluteString] 

Il utilise les méthodes suivantes enchaînées:

+0

adresseurl est déclaré comme un ivar dans ce viewcontroller. la raison pour laquelle je mets l'URL dans adresseurl est parce que mon application doit marquer quand l'utilisateur veut. Donc, à chaque fois que je charge une URL je la mets aussi dans cette variable afin qu'elle puisse être bookmarkée –

+0

Depuis que vous utilisez UIWebView, pourquoi ne pas simplement interroger la propriété 'request', et obtenir l'URL de cela si/quand vous avez besoin de bookmarker? (par exemple '[[[Webview request] URL] absoluteURL]') –

+0

merci. le résultat de ce que vous avez écrit est NSString? –

Questions connexes