2011-08-25 133 views
1

作爲Objective-C的新手,我還沒有完全掌握委託的概念。我環顧四周,但我無法理解所給出的答案,所以我用我自己的話問了這個問題。NSURLConnection和對象委託

我已經實施了DownloadDelegate與四個功能:

  • (無效)連接:(NSURLConnection的*)連接didReceiveResponse:(NSURLResponse *)響應{
  • (無效)連接:(NSURLConnection的*)連接didReceiveData:(NSData的*)數據{
  • (無效)連接:(NSURLConnection的*)連接didFailWithError:(NSError *)錯誤{
  • (無效)connectionDidFinishLoading:(NSURLConnection的*)連接{

問題是,我想發送和檢索數據下載後。我以前能夠這樣做,當這些方法在我的appviewcontroller,但因爲我想多次調用下載過程,我想我應該把它放到一個代表(這是真的嗎?)

但我不不知道如何向代理髮送和檢索數據。 順便說一下,我用蘋果教程來首先建立NSURLConnection,它工作得很好。 Link

感謝您的幫助!

回答

2

也許你對代表是什麼感到困惑。在你的情況下,NSURLConnection使用一個委託(你要聲明的那個)來發送有關重要事件的信息,比如你上面提到的那些。實際的委託可以是視圖控制器或其他模型類的一部分,或者在它自己的文件中,這並不重要。爲了在NSURLConnection的的代表和實際收到的回調,您必須聲明的協議在你的@implementation聲明

@implementation DownloadDelegate : NSObject <NSURLConnectionDelegate> 

那麼無論你開始你的連接,你需要設置自己爲這個聲明的委託

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:string]]; 
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];//here is where you are declaring yourself as the delegate 
[connection start]; 

希望這會有所幫助。

+0

是的,我確實對代表是什麼感到困惑!感謝你的回答 – Crafti

相關問題