2010-01-22 80 views
0

那麼,NSURLProtocol是非常通用的權利?它用於定義各種協議,不是嗎?爲什麼沒有NSHTTPURLProtocol類?

那麼爲什麼沒有什麼像NSHTTPURLProtocol?相反,NSURLRequest上有一個非正式的類別,它包含特定的HTTP內容。他們爲什麼這樣做?爲什麼沒有自定義HTTP協議呢?

將所有這些東西放到NSURLRequest而不是HTTP自定義協議背後是什麼想法?

確實經常使用HTTP,但無論如何:理解整個URL加載系統Cocoa/CocoaTouch是令人困惑的。現在有兩個文件。有人說,「爲你自己的協議創建一個自定義的NSURLProtocol子類」。另一個說:「爲NSURLRequest上的HTTP內容創建非正式類別」。

希望有人有深刻的理解可以清除了;)

回答

1

的幾個很好的理由:

  1. 你從來沒有訪問NSURLProtocol -subclass所供電的連接;只有NSURLConnection對象本身。因此,即使將這些方法添加到假設的NSHTTPURLProtocol課程中,您將如何訪問它們?

  2. NSURLConnection使用請求對象來確定哪個協議將處理它。因此,在創建協議對象之前,需要知道請求的所有屬性。例如,您可以創建一個覆蓋默認HTTP實現的自定義協議,但僅限於某些主機。

  3. 預先提供所有設置是一個很好的選擇。如果您可以訪問協議對象並在中途加載屬性,該怎麼辦?它應該如何處理它們 - 忽略,例外還是嘗試調整?

相關問題