0

我正在发出(异步)url 请求。

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

我在发出请求后等待几秒钟,我确信我已收到响应。

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

我不知道是怎么回事。url请求是否启动了一个新线程并且保存的任何变量在主线程中都无法访问......或者为什么我永远看不到我保存的任何变量。

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

TL;DR 我到底如何保存响应或 url 请求以供以后使用!?!

提前致谢。

4

1 回答 1

0

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

[myString retain];

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

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

.M 中的其他地方:

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

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

[myString release];
self.myString = NULL;
于 2011-03-19T01:29:45.750 回答