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