我目前有一個UIViewController和一個NSObject類。如何將自我傳遞給對象類並在完成時調用?
我想要做的是告訴NSObject類執行一個操作,然後告訴UIViewController何時完成它的操作。
我打電話的對象執行它的作用就像這樣:
[fooObject performActionWithDelegate:self];
的performActionWithDelegate功能基本上只能採取UIViewController的代表進行回調。
-(void)performActionWithDelegate:(id)d{
// bar is declared in the fooObject header file
// id bar;
[bar setDelegate:d];
[bar performCallback];
}
凡performCallback
在UIViewController中一個簡單的NSLog()
語句來:
-(void)performCallback{
NSLog(@"Successfully performed a callback");
{
現在,我想這個工作。我的第一個猜測是,這不是解決這個問題的最佳方法。
問題的全部範圍是fooObject應該執行一個httppost到webservice來更新它的一個屬性,然後通知uiviewcontroller操作是否成功。
我如何實現這一目標?
任何提示和/或指針將不勝感激!
在此先感謝。
編輯: 實際的問題是,fooObject沒有執行回調。
我試圖完成的原因是我只想讓UIViewcontroller處理演示文稿。沒有別的,我也發現有對象更新自己的好習慣。然後告訴視圖控制器顯示它們的新狀態。 是的,我不想阻止主線程。我會看看大中央派遣。感謝您的意見。 – doge 2012-07-10 07:49:17
這聽起來很不錯。將網絡代碼放在某種實用程序或網絡管理器對象中,然後使用GCD不阻止主線程應該適合您。請注意,一旦您習慣了GCD,最簡單的方法就是在操作完成時傳遞該塊作爲回調。您會在較新的Apple框架中看到這個習慣用法。 – 2012-07-10 15:05:20