Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 当我用webview显示viewcontroller时,SIGKILL_Objective C_Ios_Uiwebview_Sigkill - Fatal编程技术网

Objective c 当我用webview显示viewcontroller时,SIGKILL

Objective c 当我用webview显示viewcontroller时,SIGKILL,objective-c,ios,uiwebview,sigkill,Objective C,Ios,Uiwebview,Sigkill,我有ios应用程序。某些视图控制器包含网络视图除了一个序言外,一切都很好: 当应用程序启动时,我有几分钟没有使用它,然后继续工作,它工作正常,但当我想用webview加载viewcontroller时,它会崩溃,并出现SIGKILL错误。中断一段时间后,其他ViewController没有问题。 以下是我用于WebView的代码: _webView = [[UIWebView alloc] initWithFrame:self.view.bounds)]; [self.view addSubvi

我有ios应用程序。某些视图控制器包含网络视图除了一个序言外,一切都很好:

当应用程序启动时,我有几分钟没有使用它,然后继续工作,它工作正常,但当我想用webview加载viewcontroller时,它会崩溃,并出现SIGKILL错误。中断一段时间后,其他ViewController没有问题。 以下是我用于WebView的代码:

_webView = [[UIWebView alloc] initWithFrame:self.view.bounds)];
[self.view addSubview:_webView];
_webView.userInteractionEnabled = NO;
[_webView release];
// here is the local page, the same happens if i load internet page..
NSString *path = [[NSBundle mainBundle] pathForResource:@"localpage" ofType:@"html"];
_url = [NSURL fileURLWithPath:path];
[_webView loadRequest:[NSURLRequest requestWithURL:_url]];
所以问题是,为什么应用程序只有在中断一段时间后才尝试用WebView加载ViewController时才会崩溃


谢谢

这里的代码非常危险:

_webView = [[UIWebView alloc] initWithFrame:self.view.bounds)];
[self.view addSubview:_webView];
_webView.userInteractionEnabled = NO;
[_webView release];
我假设
\u webView
是一个ivar。首先,除非在init和dealloc中,否则不要直接访问IVAR。直接ivar访问是导致崩溃的#1原因。做错事太容易了,而你在这里做错事了。你在完成ivar之前就已经释放了。你赌的是为你持有的观点,这可能会发生,也可能不会发生。例如,如果视图被卸载(当您离开屏幕时可能发生),则
\u webView
将成为一个悬空指针。这里正确的代码是(假设
webView
retain
属性):

您还保留了
\u url
,如果您在此代码之外访问
\u url
,可能会导致崩溃。同样,切换到访问器将解决这一问题

self.url = [NSURL fileURLWithPath:path];
[self.webView loadRequest:[NSURLRequest requestWithURL:self.url]];

请注意,如果切换到ARC,此问题和其他许多问题都会很容易解决。ARC代码除了更容易编写、崩溃更少之外,几乎总是比同等的正确编写的手动内存管理更快。除非您必须支持iPhoneOS 3,否则您绝对应该切换到ARC。

您的代码非常危险:

_webView = [[UIWebView alloc] initWithFrame:self.view.bounds)];
[self.view addSubview:_webView];
_webView.userInteractionEnabled = NO;
[_webView release];
我假设
\u webView
是一个ivar。首先,除非在init和dealloc中,否则不要直接访问IVAR。直接ivar访问是导致崩溃的#1原因。做错事太容易了,而你在这里做错事了。你在完成ivar之前就已经释放了。你赌的是为你持有的观点,这可能会发生,也可能不会发生。例如,如果视图被卸载(当您离开屏幕时可能发生),则
\u webView
将成为一个悬空指针。这里正确的代码是(假设
webView
retain
属性):

您还保留了
\u url
,如果您在此代码之外访问
\u url
,可能会导致崩溃。同样,切换到访问器将解决这一问题

self.url = [NSURL fileURLWithPath:path];
[self.webView loadRequest:[NSURLRequest requestWithURL:self.url]];

请注意,如果切换到ARC,此问题和其他许多问题都会很容易解决。ARC代码除了更容易编写、崩溃更少之外,几乎总是比同等的正确编写的手动内存管理更快。除非您必须支持iPhoneOS 3,否则绝对应该切换到ARC。

哪个viewController支持WebView?您是如何加载它的?哪个viewController带有WebView?你是怎么装的?