Cocoa ASIHTTPRequest在同步模式下吞下我的NSOperation变量

Cocoa ASIHTTPRequest在同步模式下吞下我的NSOperation变量,cocoa,asihttprequest,nsoperation,nsoperationqueue,Cocoa,Asihttprequest,Nsoperation,Nsoperationqueue,嘿,我已经和这个问题斗争了一段时间了。也许我在多线程方面的知识中缺少了一些东西,但下面是发生的情况。创建nsoperation队列时,在“[request startSynchronous];”代码行之后,分配的任何变量都将被清除。以下是我要说的: @implementation imageLoadOperation @synthesize object; -(id)initWithObject:(NSMutableArray *)receivedObject { ... object =

嘿,我已经和这个问题斗争了一段时间了。也许我在多线程方面的知识中缺少了一些东西,但下面是发生的情况。创建nsoperation队列时,在“[request startSynchronous];”代码行之后,分配的任何变量都将被清除。以下是我要说的:

@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]希望有帮助@是的,这正是问题所在,谢谢你的澄清,很抱歉我没有澄清得更好。