Objective c 目标C和NSURL:我应该在哪里申报接收数据?
我有两个类,一个名为“AppController”的控制器和一个名为“URLDelegate”的类,用于封装来自的示例NSURL代码 指南反复提到将receivedData实例变量声明为“别处”。我假设这意味着在URLDelagate类之外,因为如果我在URLDelegate类中声明它,我的控制器类就无法“看到”已下载的数据 我知道收到了数据,因为在我的ConnectionIDFinishLoading函数中,我让NSLog显示结果:Objective c 目标C和NSURL:我应该在哪里申报接收数据?,objective-c,cocoa,nsurlconnection,Objective C,Cocoa,Nsurlconnection,我有两个类,一个名为“AppController”的控制器和一个名为“URLDelegate”的类,用于封装来自的示例NSURL代码 指南反复提到将receivedData实例变量声明为“别处”。我假设这意味着在URLDelagate类之外,因为如果我在URLDelegate类中声明它,我的控制器类就无法“看到”已下载的数据 我知道收到了数据,因为在我的ConnectionIDFinishLoading函数中,我让NSLog显示结果: NSLog(@"Succeeded! Received %d
NSLog(@"Succeeded! Received %d bytes of data",[receivedData length]);
receivedText=[[NSString alloc] initWithData:receivedData encoding: NSASCIIStringEncoding];
NSLog(@"receivedText=%@",receivedText);
所以我有点被以下问题难住了:
receivedData = [[NSMutableData data] retain];
receivedData
是要在URLDegate类中声明的实例变量。请注意,您只需单独使用名称“receivedData”;您不需要使用任何特殊语法来引用实例变量而不是另一个变量。因此,请避免为实例变量和局部变量指定相同的名称
您可以通过多种方式将数据提供给应用程序控制器。一个简单的方法是公开URLDelegate的属性,但这会导致一个问题,即应用程序控制器应该如何知道如何检索或重新检索该属性的值。一个更全面的解决方案列表在这里。非常感谢,Peter。这消除了许多困惑。如果我理解正确,听起来我需要弄清楚两件事:1)如何提醒控制器检查数据,2)如何保存数据直到控制器访问数据。或者,如何最好地将数据直接传递给控制器。事实上,最好不要使用urldegate类;最好将应用程序控制器设置为连接的代理。