NSURLConnection保存变量不起作用

时间:2011-03-18 23:03:38

标签: iphone nsurlconnection nsurlrequest

我正在制作(异步)网址请求。

在委托函数 connectionDidFinishLoading 中,我将服务器的响应分配给实例变量。

我提出请求后等了几秒钟,我确定收到了回复。

我有一个链接到IBAction的按钮,它将此变量打印到NSLog,但它总是为空。

我不知道发生了什么。 url请求是否启动了一个新线程,保存的任何变量都无法在主线程中访问...或者为什么我无法看到任何已保存的变量。

我可以正确使用 connectionDidFinishLoading 中的接收数据,但是当我将这些数据分配给实例变量并尝试在函数外部访问它们时,它们总是为空。

TL; DR 我如何保存回复或网址请求以供以后使用!?!

提前致谢。

1 个答案:

答案 0 :(得分:0)

问题可能是您没有保留内存,因此会自动释放内存。您要分配的实例变量是指定了“保留”还是“复制”的属性?您也可以在设置对象后手动调用retain:

[myString retain];

使用属性是一种更好的管理方式,例如.H:

@interface MyClass: Object    {
    NSString *myString;
}
@property (nonatomic, retain) NSString *myString;

.M的其他地方:

@synthesize myString    
...
...
self.myString = ...

这样可以确保在您想要之前不会释放字符串:

[myString release];
self.myString = NULL;