2010-01-26 1 views
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];

Тогда объект исчезает здесь!

Я уверен, что это имеет какое-то отношение к разрыву в принципе, но я перестраивал код в течение нескольких дней без успеха.

...

ответ

2

Awww Гоша Я не могу поверить в это. Я не устанавливал объект правильно, чтобы вызвать сохранение свойства. > self.object

+0

Что? Я не понимаю этого решения, хотя я думаю, что это может быть полезно для меня. Не могли бы вы уточнить? – IQpierce

+0

Хорошо, это странно, у меня была аналогичная проблема, и она тоже ушла, когда я сделал эквивалент: [object сохранить]; в initWithObject. Но я не понимаю, почему это необходимо или имеет какое-либо значение, когда у меня уже было (неатомическое, сохранение) определения свойства переменной. Разве это не должно быть сохранено на моем классе? Если да, то почему я должен сохранить его во второй раз? – IQpierce

+0

IQpierce, в ответ на ваш вопрос, приведенный выше код не вызывает синтезированный аксессор, что и будет выполнять сохранение для вас. Это: объект '= receivedObject;' должно быть: 'self.object = receivedObject;' или, возможно, будет понятнее (хотя очевидно, что это то же самое): '[само SetObject: receivedObject] ; ' Надеюсь, что это поможет! – paulbailey