[英]How to remove one NSArray's objects from another NSMutableArray?
[英]How to properly pass NSArray / NSMutableArray from one UIViewController to another
我正在使用的iPhone應用程序會定期終止...我有一種感覺,這是因為我如何在多個視圖控制器之間訪問共享的NSArray。 所以...
在多個ViewController之間傳遞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層次結構,則無需調試從父視圖控制器繼承的子視圖控制器屬性,因為始終可以從應用程序委托獲得引用。
您可能沒有保留它,它已被釋放,並且您嘗試再次訪問它。 嘗試將[myArray保留]發送到您正在使用的位置(在每個控制器中),並在完成后發送[myArray版本]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.