我正在制作(异步)网址请求。
在委托函数 connectionDidFinishLoading 中,我将服务器的响应分配给实例变量。
我提出请求后等了几秒钟,我确定收到了回复。
我有一个链接到IBAction的按钮,它将此变量打印到NSLog,但它总是为空。
我不知道发生了什么。 url请求是否启动了一个新线程,保存的任何变量都无法在主线程中访问...或者为什么我无法看到任何已保存的变量。
我可以正确使用 connectionDidFinishLoading 中的接收数据,但是当我将这些数据分配给实例变量并尝试在函数外部访问它们时,它们总是为空。
TL; DR 我如何保存回复或网址请求以供以后使用!?!
提前致谢。
答案 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;