Iphone UIWebView loadRequest导致模拟器崩溃

Iphone UIWebView loadRequest导致模拟器崩溃,iphone,objective-c,ios,memory-management,uiwebview,Iphone,Objective C,Ios,Memory Management,Uiwebview,所以我尝试加载一个简单的URL(http://www.google.com)进入web视图。我在正在使用的应用程序中使用了这个,但将其归结为一个基本应用程序,以删除其他变量。我有一个绝对最小的应用程序设置,一个视图控制器,它的主视图是webview。对于代码我有 -(void)viewDidLoad { [super viewDidLoad]; UIWebView *webView = (UIWebView*)self.view; NSMutableString *ur

所以我尝试加载一个简单的URL(http://www.google.com)进入web视图。我在正在使用的应用程序中使用了这个,但将其归结为一个基本应用程序,以删除其他变量。我有一个绝对最小的应用程序设置,一个视图控制器,它的主视图是webview。对于代码我有

-(void)viewDidLoad
{
    [super viewDidLoad];

    UIWebView *webView = (UIWebView*)self.view;
    NSMutableString *urlString = [[NSMutableString alloc] initWithString:@"http://www.google.com"];
    NSURL* url = [[NSURL alloc] initWithString:urlString];
    NSURLRequest *urlRequest = [[NSURLRequest alloc] initWithURL:url];
    NSLog(@"Sending web request to %@", urlString);

    [webView loadRequest:urlRequest];

    [urlRequest release];
    [url dealloc];
    [urlString dealloc];
}

当它加载时,我在Web线程中得到一个EXC_BAD_访问崩溃。我不确定这是否是与我在模拟器中工作有关的问题,或者是我刚刚把设置搞砸的问题。

不要调用
dealloc
。在
url
上调用
release
,然后调用
urlString

这是因为其他对象引用了这些对象,当您说
dealloc
时,您是在显式地销毁它们。这会导致
EXC\u BAD\u ACCESS
,因为当其他对象尝试访问url和字符串对象时,它们已经被销毁

这是整个参考点计数。你已经处理完这些对象了,所以如果你说:

[url release];
[urlString release];
你是在宣布。这将减少对这些对象的引用计数。但在上面,你说:

NSURL* url = [[NSURL alloc] initWithString:urlString];
这意味着
url
可能引用了该字符串。因此,当您创建它时,它将保留它。因此,在释放字符串后,它不会被销毁,因为
url
仍然有对它的引用。处理完后,它也会释放它,然后(如果没有其他人对该对象拥有所有权),它会自动被
dealloc
ed,因为它的计数将下降到零


在处理这种内存管理时,请始终记住还有谁在使用您的对象。您可以在中阅读更多信息。

不要调用
dealloc
。在
url
上调用
release
,然后调用
urlString

这是因为其他对象引用了这些对象,当您说
dealloc
时,您是在显式地销毁它们。这会导致
EXC\u BAD\u ACCESS
,因为当其他对象尝试访问url和字符串对象时,它们已经被销毁

这是整个参考点计数。你已经处理完这些对象了,所以如果你说:

[url release];
[urlString release];
你是在宣布。这将减少对这些对象的引用计数。但在上面,你说:

NSURL* url = [[NSURL alloc] initWithString:urlString];
这意味着
url
可能引用了该字符串。因此,当您创建它时,它将保留它。因此,在释放字符串后,它不会被销毁,因为
url
仍然有对它的引用。处理完后,它也会释放它,然后(如果没有其他人对该对象拥有所有权),它会自动被
dealloc
ed,因为它的计数将下降到零


在处理这种内存管理时,请始终记住还有谁在使用您的对象。你可以在上面阅读更多的内容。

d'Oh,好点…我通常是C++程序员,所以这个管理的东西对我来说是很新的。Thanks@DanF:哈哈,没问题。与
new
delete
等相比,它很容易忘记。不过,我想我更喜欢这个方案。=)哦,好点…我通常是C++程序员,所以这个管理的东西对我来说是很新的。Thanks@DanF:哈哈,没问题。与
new
delete
等相比,它很容易忘记。不过,我想我更喜欢这个方案。=)