【问题标题】:Creating and canceling an NSURLConnection创建和取消一个 NSURLConnection
【发布时间】:2010-01-24 14:18:41
【问题描述】:

当我允许加载完成时,我有一个 NSURLConnection 工作正常。但是如果用户点击后退按钮,这意味着 webview 将消失,我想取消正在进行的 NSURLConnection。但是,如果在调用 viewWillDissapear 时将 webview 调用到此类中,那么我会这样做:

[conn cancel]

我得到一个 NSINValidArgument 异常。

连接在.h文件中定义为实例数据:

NSURLConnection *conn;

异步在此处启动:

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:articleURL]];

    if ([NSURLConnection canHandleRequest:request] && reachable) {
        // Set up an asynchronous load request
        conn = [NSURLConnection connectionWithRequest:request delegate:self];
        loadCancelled = NO;
        if (conn) {
            NSLog(@" ARTICLE is REACHABLE!!!!");
            self.articleData = [NSMutableData data];
        }
    }

【问题讨论】:

    标签: iphone cocoa-touch


    【解决方案1】:

    出现异常的原因是您将自动释放对象保存到实例变量中。
    当用户单击返回按钮时,“conn”将立即自动释放。之后,您调用取消。因此,您遇到了例外。
    为防止这种情况发生,您应该在将 NSURLConnection 对象保存在实例变量中时保留它。

    conn = [[NSURLConnection connectionWithRequest:request delegate:self] retain];
    

    conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    

    不要忘记在 dealloc 方法中释放它。

    【讨论】:

      猜你喜欢
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      • 2012-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多