Cocoa ASIHTTPRequest在同步模式下吞下我的NSOperation变量
嘿,我已经和这个问题斗争了一段时间了。也许我在多线程方面的知识中缺少了一些东西,但下面是发生的情况。创建nsoperation队列时,在“[request startSynchronous];”代码行之后,分配的任何变量都将被清除。以下是我要说的:Cocoa ASIHTTPRequest在同步模式下吞下我的NSOperation变量,cocoa,asihttprequest,nsoperation,nsoperationqueue,Cocoa,Asihttprequest,Nsoperation,Nsoperationqueue,嘿,我已经和这个问题斗争了一段时间了。也许我在多线程方面的知识中缺少了一些东西,但下面是发生的情况。创建nsoperation队列时,在“[request startSynchronous];”代码行之后,分配的任何变量都将被清除。以下是我要说的: @implementation imageLoadOperation @synthesize object; -(id)initWithObject:(NSMutableArray *)receivedObject { ... object =
@implementation imageLoadOperation
@synthesize object;
-(id)initWithObject:(NSMutableArray *)receivedObject
{
...
object = receivedObject;
...
}
- (void)main {
...
//send request
printf("retreiving photo info from server\n");
NSURL *url = [NSURL URLWithString:[siteUrl stringByAppendingString:@"/connect.php"]];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"lookAtPhoto" forKey:@"purpose"];
[request setRequestCookies: [ASIHTTPRequest sessionCookies]];
该对象仍然存在于此处
[请求启动同步]
然后物体消失在这里
我确信这与原则理解上的差距有关,但我已经重新安排代码好几天了,但都没有成功
哎呀,我简直不敢相信。我没有以正确的方式设置对象以触发属性保留。>self.object什么?我不理解这个解决方案,尽管我认为它可能对我有用。你能详细说明一下吗?好吧,这很奇怪,我遇到了一个类似的问题,当我做了相当于:[object retain]的操作时,它也消失了;在initWithObject中。但是我不明白为什么这是必要的,或者有什么区别,当我已经对变量的属性定义有了(非原子的,保留的)的时候。这不是应该保留在我的课堂上吗?如果是这样的话,为什么我要再次保留它呢?IQpierce,在回答您的问题时,上面的代码不会调用合成访问器,这将为您执行保留。这:
object=receivedObject代码>应该是:self.object=receivedObject
或者更清楚一点(虽然显然是一样的):[self-setObject:receivedObject]代码>希望有帮助@是的,这正是问题所在,谢谢你的澄清,很抱歉我没有澄清得更好。