0

您好我正在开发一个 iPhone 应用程序。我需要从 B 类委托给 B 类创建一个 NSURLConnection。在建立连接的时候,我导航回之前的视图,即 A 类。所以 B 类对象被释放,我从 NSURLConnection 收到一个错误,因为它是委托给 B 类。那么我该如何建立连接,以便即使我已经导航到 A 类也不会崩溃。我们是否使用 GCD 或其他一些不同的线程在不设置不同委托的情况下使这项工作正常工作。

4

2 回答 2

0

例如,您必须强烈引用 B 类中的连接,@property (strong, nonatomic) NSURLConnection * connection然后当您摆脱 B 类时,您可以调用[self.connection cancel];

来自 Apple 的 NSURLConnection 参考文档:

调用此方法后,连接的委托不再接收任何有关该连接的消息。如果你想重新尝试连接,你应该创建一个新的连接对象。

放这个的好地方是-[UIViewController viewDidDisappear];

于 2012-11-08T19:49:27.560 回答
0

在您的 ClassA 中,您应该为 ClassB 的实例创建一个强属性,否则,当您返回 ClassA 时,ClassB 会从堆栈中弹出并被释放。此外,如果您想在再次推送时转到同一个 CLassB 实例,则推送到 ClassB 的代码应如下所示(假设您有一个名为 classB 的属性):

if (! self.classB){
    ClassB self.classB = [[ClassB alloc] init]; 
}
[self.navigationController pushViewController:self.classB];
于 2012-11-08T22:32:26.423 回答