如何創建一個包含它自己的委託的新文件,以便我可以創建一個ASIHTTPRequest以及它自己的異步結束,以及足夠簡單的事情,我只需要將[request setDelegate:self];
設置爲[request setDelegate:AlternateDelegate];
之類的東西,並且只需在開始時添加一個include的文檔來引用AlternateDelegate委託ASIHTTPRequest異步的另一個代表?
0
A
回答
1
我知道這個問題是舊的,但如果有人遇到它:
@Hankweb seemes在談論使用請求作爲自己的代表。這當然有一些情況。例如,我正在開發一個項目,該項目使用ASIHTTPRequest
從遠程源獲取JSON並將其導入到Core Data存儲中。
此操作(字面上,ASIHTTPRequest
是NSOperation
的子類)幾乎完全自包含;我在後臺線程上使用流式JSON解析器將對象導入到NSManagedObjectContext
中進行自定義請求,該對象在保存時觸發一條內部捕獲的通知,並使用performSelectorOnMainThread:waitUntilDone:
傳遞到主線程的上下文。
我正在使用ASIHTTPRequest
的塊支持來完成此操作;在我的自定義initWithURL:
方法中,我設置了相關回調(dataReceivedBlock
,completionBlock
,failureBlock
等)。不過,傳統的委託模式(使用ASIHTTPRequestDelegate
協議)也應該可行。
一個問題:你應該確保請求不會自己保留太多時間,否則你最終會發生內存泄漏。當使用多線程時,這很容易錯過,特別是在使用塊時。相反的:
- (id)initWithURL:(NSURL *aURL) {
//...
[self setCompletionBlock:^{
[self doSomething];
}];
//...
return self;
}
引用塊內self
時使用__weak
屬性(或__block
如果使用ARC是不):
- (id)initWithURL:(NSURL *aURL) {
//...
__weak id blockSelf = self;
[self setCompletionBlock:^{
[blockSelf doSomething];
}];
//...
return self;
}
如果你不知道這是爲什麼重要的是,請務必閱讀Apple's guide to blocks in Objective-C和ASIHTTPRequest block API documentation。
1
ASIHTTPRequest的委託只是一個標準的目標C對象。只需創建一個新類,包含它的標題,創建/獲取對象並將委託設置爲該對象。
你有沒有試過這個,並遇到問題?如果是這樣的問題是什麼?
相關問題
- 1. 異步Asihttprequest
- 2. ASIHTTPRequest是不是異步的?
- 3. 異步添加圖像 - ASIHTTPRequest
- 4. ASIHTTPRequest異步更新uitableview
- 5. ASIHTTPRequest多個異步請求問題
- 6. 模型類中的ASIHTTPRequest異步請求
- 7. ASIHTTPRequest代表團
- 8. 在另一個異步循環內的Javascript異步循環
- 9. ASIHTTPRequest異步下載沒有取消
- 10. 使用ASIHTTPRequest測試異步下載
- 11. 從另一個異步例程調用異步例程
- 12. 異步/等待另一個線程ID
- 13. 異步結果在另一個線程
- 14. ASIHTTPRequest同步
- 15. 實現一個異步迭代器
- 16. Nodejs表示異步回調重定向到另一個路由
- 17. 異步任務的片段1塊另一個異步任務不同Fragment2
- 18. 使用數據從一個異步API調用到另一個
- 19. angular2 Observable:如何等異步結果並返回另一個異步方法
- 20. ASIHttprequest Muliple一個progressview
- 21. 異步替代
- 22. 從一個代表轉換爲另一個代表。僞鑄造
- 23. 同步ASIHTTPRequest更新標示
- 24. 節點,迭代mysql行,使用異步庫調用另一個mysql查詢
- 25. Angular 2訂閱訂閱另一個異步函數的服務
- 26. 異步調用另一個python腳本的python腳本
- 27. 異步調用另一個lambda的aws lambda
- 28. 另一個異步函數結束時的Javascript調用函數
- 29. grails post form到異步結果的另一個頁面
- 30. 將異步函數的完成鏈連接到另一個
我真的不明白你在問什麼 - 你問如何創建一個新的目標C類? – JosephH 2010-08-19 09:41:16
只是想爲文件創建另一個委託。 – 2010-08-19 16:00:33