2011-01-11 62 views
0

我有一個簡單的問題,如果我使用ASIFormDataRequest時,我需要釋放請求對象?Iphone:需要發佈使用ASIFormDataRequest

NSURL *url = [NSURL URLWithString:@"url"]; 
ASIFormDataRequest *requestForm = [ASIFormDataRequest requestWithURL:url]; 
[requestForm addPostValue:[[NSUserDefaults standardUserDefaults] stringForKey:@"user"] forKey:@"user"]; 
[requestForm setRequestMethod:@"POST"]; 
[requestForm setDelegate:self]; 
[requestForm startAsynchronous]; 

感謝

回答

1

在實現文件快速搜索表明,它會自動釋放。

+ (id)requestWithURL:(NSURL *)newURL 
{ 
    return [[[self alloc] initWithURL:newURL] autorelease]; 
} 
3

你要記住,你總是負責釋放的對象,如果該方法從中接收它包含newcopy,或init

在這種情況下,您不需要釋放它。 ASIHTTPRequestautorelease適合您。

+0

所以,如果我使用: NSPredicate * eventPredicate = [NSPredicate predicateWithFormat:\t \t \t \t \t \t \t \t \t \t @ 「(事件==%@)」,[項目objectForKey:@ 「事件」]]; [eventRequest setPredicate:eventPredicate]; 我不需要釋放謂詞,對嗎? – xger86x 2011-01-11 14:56:52

1

您的請求是在代碼中自動發佈的,因此您不需要發佈它(如其他人所說)。

但是,您正在啓動一個異步請求 - 它將在未來的某個時間完成/失敗,並且如果它與其他對象關聯,當視圖退出時它將被釋放,您可能會將自己打開並導致崩潰。所以我建議你想讓requestForm成爲你類的一個屬性(所以當你將請求分配給self.requestForm時,它會被保留下來),並且在請求完成時顯式釋放&。

如果這是一個非常簡單的應用程序只有一個視圖,你可能會逃脫,但沒有。

相關問題