給定具有UINavigationController和2個級別的UITableViews的應用程序部分(即在根控制器上選擇一行,將第二個控制器推到導航堆棧上),我有以下問題:視圖控制器之間的通信
1)兩個控制器都需要一個用戶對象。兩個控制器之間進行通信的最佳方式是什麼?我看到的此站點,其中提到扶養注射和根控制器可以由用戶對象傳遞給所述第二電平控制器的柱:
@implementation SecondLevelViewController
-(void) initWithUser: (User *) user {
// myUser is an instance variable
myUser = user;
[myUser retain];
}
在該示例中所述第二控制器將似乎保留用戶而在這種情況下(鬆散耦合),我已經看到其他資源(例如斯坦福iPhone開發課程),它鼓吹用戶被簡單地分配,而不保留。
我也看到了一個委託形式的參數,在第二個控制器(而不是上面的保留的User實例變量)上使用分配的id對象。
如果有人能夠爲我澄清這一立場,我感到非常困惑,因爲這個領域看似矛盾的建議讓我感到非常困惑。視圖控制器之間進行通信的最佳方式是什麼?
2)我的第二個問題也涉及到控制器的結構。我已經看到了一些例子,其中根控制器(在上面的安排中)有一個實例化的二級控制器陣列。在專業應用程序中這是正常的還是會對以這種方式做事情有顯着的記憶影響(即沒有延遲加載)?我認爲陣列的優點是減少二級控制器的加載時間?
謝謝你的迴應,因爲我正在試圖正確地開發事物,而不是將它們拼湊在一起。
感謝您的回答Ole和我注意到您對每個問題的一篇文章的評論。然而,我只是好奇,如果數組方法(在我的第二個問題中提到)確實有任何加載速度優勢,或者它只是一個有用的方法來構造您的代碼? – Urizen 2009-12-10 12:33:57
實例化一個視圖控制器對象不應該花費大量的時間,所以我會說任何加載速度優勢都是微不足道的。需要花費時間的是加載視圖,但數組方法不會改變視圖控制器無論如何都會延遲加載視圖的事實。 – 2009-12-10 12:59:18
再次感謝您。非常有用的答案。 – Urizen 2009-12-10 13:35:45