1
嘿,我一直在与这个问题争斗了一段时间。也许在多线程知识方面我缺少一些东西,但是这里发生了什么。当我创建一个nsoperation队列时,分配的任何变量在“[request startSynchronous]”之后被清除;“代码行。以下是我在谈论:ASIHTTPRequest在同步模式下吞噬我的NSOperation变量
@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]];
的对象仍然存在这里
[请求startSynchronous]
然后对象消失在这里!
我确信这与原则理解上的差距有关,但我已经重新安排了几天的代码,但没有成功。
...
什么?我不明白这个解决方案,但我认为它对我有用。你能详细说明一下吗? – IQpierce 2010-05-25 18:56:15
好吧,这很奇怪,我遇到了类似的问题,当我做了相当于: [object retain];在initWithObject中使用 。但是我不明白为什么这是必要的,或者当我已经有了(非原子的,保留)变量的属性定义时有什么区别。难道它不应该保留在我的课堂上吗?如果是这样,为什么我不得不第二次保留它? – IQpierce 2010-05-25 19:00:48
IQpierce,在回答你的问题时,上面的代码不会调用合成的存取器,这会为你执行保留。 此: '对象= receivedObject;' 应该是: 'self.object = receivedObject;' 或许更清晰(尽管这显然是同样的事情): '[自我的setObject:receivedObject] ;' 希望有所帮助! – paulbailey 2010-12-04 16:27:44