2010-07-27 8 views
0

Je reçois cette erreur lorsque je déploie sur mon iPad. Cela ne se produit pas dans le simulateur.Erreur Ipad: 'Programme reçu le signal EXC_BAD_ACCESS'

Mon application ipad a trois UIWebViews. La majorité de cette application est entièrement écrite en tant qu'application Web et utilise CSS pour la rendre plus native. Les liens qui sont cliqués dans les différentes vues Web s'ouvriront dans un certain en fonction de la valeur de la variable de requête "iPadTarget".

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    NSURL *url = [request URL]; 

//Extract the value from request variable 'iPadTarget' in url string. 
NSString *test = [url query]; 
int index = [test rangeOfString:@"iPadTarget="].location; 
int target = index + 11; 
NSLog(@"%i", target); 
char c = [test characterAtIndex:target]; 
NSLog(@"%c",c); 

if (navigationType == UIWebViewNavigationTypeLinkClicked) { 
    if (c == '1') { 
     [viewOne loadRequest:request]; 
     return NO; 
    } else if (c == '2') { 
    [viewTwo loadRequest:request]; 
    return NO; 
    } else if (c == '3') { 
    [viewThree loadRequest:request]; 
    return NO; 
    } 
} 
    return YES; 
    [url release]; 
    } 

Le code ci-dessus localise la variable "iPadTarget" et extrait sa valeur (1 à 3). Pourquoi ai-je cette étrange erreur? Toute aide est appréciée.

Répondre

1

La ligne

[url release]; 

est la source de votre problème. Vous libérez un objet que vous ne possédez pas. Vous avez acquis l'URL via la méthode -URL de la demande, et comme elle ne contient pas new, create, ou copy vous n'êtes pas le propriétaire. Supprimez la ligne [url release] et relisez les instructions de gestion de la mémoire.

Questions connexes