一千萬個為什麽

搜索

如何正確地將NSArray/NSMutableArray從一個UIViewController傳遞到另一個UIViewController

我正在研究的iPhone應用程序正在定期終止...我感覺這是因為我在多個視圖控制器中訪問共享的NSArray。所以......

在幾個ViewControllers中傳遞NSArray/NSMutableArray的最佳方法是什麽...所有這些都可以修改和/或設置為nil或其他什麽?

謝謝

最佳答案

一般來說,有兩種方法。

在第一種方法中,當您實例化下一個視圖控制器時,可以將數組屬性設置為從當前(即將成為上一個或父級)視圖控制器“繼承”:

MyNextViewController *_myNextViewController = [[MyNextViewController alloc] initWithNibName:@"MyNextViewController" bundle:nil];
_myNextViewController.myViewControllerArray = self.myViewControllerArray;
...

在第二種方法中,您可以在應用程序委托中創建 myAppDelegateArray 屬性,在應用程序初始化時實例化數組(或在其他地方按需實例化)。

然後,您可以從任何類(包括視圖控制器)調用此屬性的getter。

例如,在 MyNextViewController 的實例中,您可能有一個名為 myViewControllerArray 的屬性,您可以按如下方式設置它:

self.myViewControllerArray = [UIAppDelegate myAppDelegateArray]; 

您可以在應用程序常量文件中的某處添加 #define 語句,例如:

#define UIAppDelegate ((MyAppDelegate *)[UIApplication sharedApplication].delegate)

或者如果您願意,可以使用完整的 [UIApplication sharedApplication] .delegate 調用。

作為一種通用方法,人們似乎更喜歡應用委托方法,因為它分散了對所需屬性的訪問權限。

使用此方法,如果重新排列視圖控制器或將新視圖控制器插入VC層次結構,則無需調試從父視圖控制器繼承的子視圖控制器屬性,因為始終可以從應用程序委托中獲取引用。

轉載註明原文: 如何正確地將NSArray/NSMutableArray從一個UIViewController傳遞到另一個UIViewController