我在我的應用程序中有一個棘手的情況。我正在應用程序服務器調用完成啓動方法基於服務器響應我需要加載不同的意見。我的應用程序在模擬器中工作正常,但在設備應用程序獲取崩潰,因爲需要時間來獲得服務器響應.i嘗試NSThread運行服務器調用,但屏幕正在等待,直到它從服務器得到響應。我可以移動應用程序刪除方法的東西將東西移出appdelegate
回答
更好的方法是顯示一些臨時視圖,並使網絡請求異步或在後臺線程上執行。如果您阻止主線程時間過長(這可能是您的案例中發生的情況),iOS會殺死您的應用程序,並且用戶不太可能希望使用花費10或20秒的應用程序,展示一個有用的展示。當您從服務器獲得響應時,您可以適當重新配置顯示器。
順便說一句,下次明確陳述你的問題是個好主意。要知道你現在要問的問題有點難。
NSURLConnection是你的朋友。解決它的最好方法是使用NSURLConnection執行服務器調用異步。
Apple Developer Connection上有Sample Code,它以異步方式下載UITableView中每行的圖像,因此UI更具響應性。所以,如果你看看這個代碼,你應該能夠重構你的代碼。
異步加載服務器響應可防止iOS運行時關閉應用程序,因爲您阻止主線程超過20秒。
如果您的目標是iOS 4.0或更高版本,則可以使用Grand Central Dispatch在後臺線程上進行網絡調用。這是一個簡單的例子。
// Create a dispatch queue
dispatch_queue_t networkQueue = dispatch_queue_create("NetworkQueue", 0);
dispatch_async(networkQueue,^{
// Start your network task here.
// Now when it completes we will dispatch back to the main queue
// and you can perform UI updates
dispatch_async(dispatch_get_main_queue(),^{
// Perform UI updates here on the main thread
};
// Release your dispatch queue
dispatch_release(networkQueue);
};
現在,雖然這是確定你已經在屏幕上放置了一些初步的未填充的用戶界面。您還應該適當地顯示和隱藏UIApplication的networkActivityIndicator,並可能會顯示一些「加載...」UI。
GCD +1。但是,它是否支持所有iOs版本? –
不,就像我說過的,只有iOS版本4.0或更高版本纔可用。 –
你需要調用
[[NSURLConnection alloc]initWithRequest:request delegate:self];
這是異步請求,就可以實現的appdelegate NSURLConnection的的委託方法。
- (void)connectionDidFinishLoading:(NSURLConnection *)connection;
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;
- 1. 如何將APNS回調放在AppDelegate以外的東西上?
- 2. C - 雖然(東西||東西)
- 3. grep東西空間東西()
- 4. 多個HTML東西的東西的東西
- 5. PHP如果有東西和東西那麼東西?
- 6. jquery移動奇怪的東西
- 7. 在==東西或別的東西,
- 8. REGEX - 去除東西周圍的東西?
- 9. X =東西(X)的東西(X)
- 10. jquery:包含東西或其他東西
- 11. 東西好&關於SharePoint壞東西
- 12. 轉到下一頁將按比例移動別的東西
- 13. 如何將Windows代碼視頻遷移到更好的東西?
- 14. 將形狀sql遷移到同樣強大的東西
- 15. 如何將voyager的東西遷移到新的部署實例?
- 16. 將多個app.config移到更全局的東西
- 17. Android:Listview的東西
- 18. javascript - 新東西
- 19. jQuery的:東西
- 20. 東西在javascript
- 21. $ {}東西肥皂
- 22. 別的東西
- 23. 簡化東西
- 24. iPhoneOS核心數據遷移:將某個東西從實體移動到文件
- 25. 斷點不輸出任何東西
- 26. innerHTML不輸出任何東西
- 27. gluLook沒有任何東西出現
- 28. jQuery Dropdown - 找出被點擊的東西
- 29. DUMP不能輸出任何東西
- 30. Doxygen不輸出任何東西
您是否使用同步請求從服務器獲取數據? – Deeps