2011-01-11 8 views
0

リクエストオブジェクトをリリースする必要があるときにASIFormDataRequestを使用している場合は、簡単な質問が1つありますか?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が含まれている場合は、常にオブジェクトを解放する責任があることを覚えておく必要があります。

この場合、リリースする必要はありません。 ASIHTTPRequestクラスautoreleaseあなたのためです。

+0

だから私が使用している場合: NSPredicate * eventPredicate = [NSPredicate predicateWithFormat:\t \t \t \t \t \t \t \t \t \t @ "(イベント==%の@)"、[アイテムのobjectForKey: "イベント" @]]; [eventRequest setPredicate:eventPredicate]; 私は述語を解放する必要はありません、そうですか? – xger86x

+0

修正します。そのルールは常に真実です。あなたの質問に答えると信じるならば、私の答えを忘れないでください。 –

1

あなたのリクエストはあなたのコードで自動リリースされているので、リリースする必要はありません。

ただし、非同期リクエストを開始しています。これはいつか完了/失敗し、ビューが終了すると解放される他のオブジェクトに関連付けられていると、クラッシュする可能性があります。だからあなたのクラスのプロパティをrequestFormにすることをお勧めします(要求をself.requestFormに代入すると、それはあなたのために保持されます)。そして要求が完了したら、明示的に&を解放します。

ただ1つのビューで非常にシンプルなアプリであれば、それはなくても手放すことができます。

関連する問題