Я получаю следующую ошибку:
* - [URLViewController responsedsToSelector:]: сообщение отправлено освобожденному экземпляру 0xdb5c3b0
и я не совсем понимаю, как начать отлаживать это. Может, кто-нибудь подскажет, с чего начать?
Вот код, если вы хотите увидеть. На самом деле это перехватчик URL, так что все ссылки открываются в presentModalViewController
- (BOOL)openURL:(NSURL *)url{
URLViewController * web = [[URLViewController alloc] init];
web.url = url;
UINavigationController * nav = [[UINavigationController alloc] initWithRootViewController:web];
[nav.navigationBar setTintColor:[UIColor blackColor]];
[nav setModalPresentationStyle:UIModalPresentationFormSheet];
[self.detailViewController presentModalViewController:nav animated:NO];
[web release];
[nav release];
return YES;
}
Если реализация URLViewController представляет какой-либо интерес, вот она:
@implementation URLViewController
@synthesize webview;
@synthesize url;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (IBAction) done:(id) sender
{
[self dismissModalViewControllerAnimated:YES];
}
- (IBAction) openInSafari:(id) sender
{
[(CVore*)[CVore sharedApplication] openURL:url withOverride:NO];
}
- (void)dealloc
{
[super dealloc];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
self.webview.delegate = self;
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webview loadRequest:requestObj];
[self.navigationItem setRightBarButtonItem:[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(done:)]];
[self.navigationItem setLeftBarButtonItem:[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(openInSafari:)]];
// Do any additional setup after loading the view from its nib.
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString* title = [webView stringByEvaluatingJavaScriptFromString: @"document.title"];
self.title = title;
//self.navigationItem.title = title;
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return YES;
}
@end
UPDATE:
После отслеживания этого, я думаю, что моя ошибка здесь заключается в том, что мне нужно установить для делегата UIWebView значение nil до того, как [super dealloc] будет правильным? Как и когда я это сделал, он больше не падает