내 응용 프로그램에 약간의 문제가 발생했습니다. 그것은 간단한 문제이지만, 나는 충돌의 원인이 무엇인지 알 수 없다. UINavigationcontroller 두 번째 시도에서 popViewcontroller가 작동하지 않습니다.
나는 단지 웹보기 (작성 및 스토리 보드에 연결) (ARC 사용)와 간단한의 ViewController 있습니다@implementation BPActivateController
@synthesize mainWebView;
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
}
return self;
}
- (void)viewDidLoad
{
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@/test.php?code=%@", BASE_URL, [[NSUserDefaults standardUserDefaults] objectForKey:@"uniqueIdentifier"]]];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[mainWebView loadRequest:requestObj];
[super viewDidLoad];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *html = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];
if ([html rangeOfString:@"<h1>Not Found</h1>"].location != NSNotFound)
{
[self.navigationController popViewControllerAnimated:YES];
NSLog(@"pop the view controller");
}
}
- (void)viewDidUnload
{
[self setMainWebView:nil];
[super viewDidUnload];
}
보기가 호출되는 popViewControllerAnimated을 열고 처음과 사용자가 다시 리디렉션 마지막 viewcontroller. 하지만보기가 다시 열리면 popViewControllerAnimated가 호출 된 후 EXEC_BAD_ACCESS를 알려줍니다. 내가 좀비 코드 나에게 다음 추적 제공하도록 설정하면 : 나는 몇 가지를 시도
2012-06-04 11:51:12.717 actusmedicus[410:707] pop the view controller
2012-06-04 11:51:12.720 actusmedicus[410:707] *** -[BPActivateController respondsToSelector:]: message sent to deallocated instance 0xc6d95b0
을하지만 여전히 호출되고 무엇을 선택 명확하지 않다. 웹뷰가 여전히 바쁘다 고 생각합니다.
누구나 나를 궤도에 진입시키는 아이디어가 있습니까?
EXEC_BAD_ACCESS는 웹보기의 위임을 삭제를 설정하여 고정
[EDIT]. 하지만 실제 문제는 여전히 UINavigation 스택에 뷰가 푸시되고 웹 뷰가로드되고 404 후에 popViewControllerAnimated가 성공적으로 실행됩니다. 그러나 UINavigation 스택에서 동일한 뷰를 두 번째로 푸는 경우 (처음과 같은 방식으로) popViewControllerAnimated는 아무 것도하지 않습니다. 나는 그것이 문제가되는 것 같지 않다. 그러나 만약 그것이 문제가되지 않는다면 체크했다.
나의 첫 번째 아이디어는 다른 스레드에서 실행되었고 거기에 UINavigationcontroller가 존재하지 않는다는 것이었다. 나는 performSelectorOnMainThread의 도움으로 그 가능성을 배제했다.
마지막으로 popViewControllerAnimated를 수동으로 호출하는 단추를 추가했는데 그 때마다 작동하므로 프로그래밍 방식으로 호출 할 때 왜 작동하지 않습니까?
popViewControllerAnimated를 호출하기 전에 stopLoading 메서드를 시도했지만 문제가 아직 남아 있습니다. 프로젝트가 ARC이므로 dealloc을 호출 할 필요가 없습니다 –
delgate를 Nil로 설정하면 BAD_ACCESS 메시지가 수정되지만 실제 문제는 여전히 있습니다. 거기, 어떤 아이디어? –