2014-04-24 98 views
1

我正在嘗試開發一個簡單的文件證明概念。代碼如下:將代表轉換爲靜態函數

int main(int argc, const char *argv[]) 
{ 
    NSString* requestString = @"https://www.example.com"; 
    NSURL* requestUrl = [NSURL URLWithString:requestString]; 

    NSURLRequest* request = [NSURLRequest requestWithURL:requestUrl 
              cachePolicy:NSURLRequestReloadIgnoringLocalCacheData 
             timeoutInterval:10.0f]; 

    NSURLConnection* connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

    return 0; 
} 

通過HTTPS example.com請求使用私有CA,所以我需要相信,CA.爲了信任CA,我需要添加一些代碼到NSURLConnectionDelegate-connection:didReceiveAuthenticationChallenge:

問題是我需要NSURLConnection的回調委託,我知道如何去做的唯一方法是使用另一個單獨的對象。

是否有可能將委託平鋪爲靜態函數,以便我可以將所有代碼保存在單個文件中?

回答

2

這是不可能做你真正要求的; NSURLConnction必須有一個對象作爲它的委託,因爲它將發送特定的消息,從委託協議到該對象。函數無法響應消息。 (沒有理由不能在這個文件但定義委託類。)

有用於creating on-the-spot delegates一些選項,你可能會發現有用的,在這種特殊情況下,可以再次使用+sendSynchronousRequest:returningResponse:error:

+0

再次感謝喬希。我跟着你和vikingosegundo提供的材料,並且認定它太涉及了。我分手了,併爲代表增加了更多的源文件。 – jww

+0

很高興我能幫到你。 –

3

你不必爲一個類有一個文件。你可以在你的main.m中添加類

但是你會發現另一個問題:你的代碼執行速度太快,NSURLConnection沒有足夠的時間等待任何返回。你可以添加一個NSRunLoop 12

+0

謝謝vikingosegundo。你對「NSRunLoop」是正確的。 – jww