我正在從AppDelegate讀取不小的數組。在視圖之間共享nsarray(3.1M大小)的正確方法
NSArray *mycountryspecific = [[NSArray alloc] initWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"nextTwoWeekEvents" withExtension:@"ary"]];
self.myCountrySpecificCodesList = mycountryspecific;
[mycountryspecific release],mycountryspecific = nil;
爲了保持它在內存中,我申報財產
@property (nonatomic, retain) NSArray *myCountrySpecificCodesList;
但是從主視圖中,我有而我會使用它,事件控制器下,我將有事件的詳細視圖控制器哪裏去了2個步驟它將是這個數組的一部分(基於謂詞)。
我目前的設計是一個不是來自AppDelegate的讀取數組,而是來自事件詳細視圖控制器。
你能分享你的經驗嗎?如果更好的是從appdelegate載入數組並保存在內存中,請建議在類之間發送訪問屬性的正確方法,而不會發生內存泄漏。
EventsTableViewController *events = [[EventsTableViewController alloc] initWithNibName:@"EventsTableViewController" bundle:nil];
self.eventListController = events;
PromoView *promo = [[PromoView alloc] initWithNibName:@"PromoView" bundle:nil];
UINavigationController *navigationController = [[UINavigationController alloc] init];
[navigationController pushViewController:events animated:NO];
UITabBarController *tabBar = [[UITabBarController alloc] init];
self.tabBarController = tabBar;
[tabBar setViewControllers:[NSArray arrayWithObjects:navigationController,promo,nil]];
eventListController.managedObjectContext = self.managedObjectContext;
[self.window addSubview:tabBarController.view];
SOLUTION 一些跟我玩的控制器之後,我找到一個解決方案。 我每次在顯示詳細頁面時都會從文件中讀取數組,但現在這是一本字典,其中一個鍵是第一個要查找的數組,而且這個數組的陣列是我需要的結果。 陣列transer到34K和代碼,這使情況網式搜索在按鍵是:
NSDictionary *mycountryspecific = [[NSDictionary alloc] initWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"countryspecific" withExtension:@"dict"]];
NSSet * mySet = [mycountryspecific keysOfEntriesPassingTest:^(id key, id obj, BOOL *stop) {
if([key compare:countryName options:NSCaseInsensitiveSearch] == NSOrderedSame) {
return YES;
}
else
return NO;
}];
NSArray *result = [mycountryspecific valueForKey:[mySet anyObject]];
這種方式是在iPhone 3G的:)當然,在模擬器好得多;-)
運作良好
目前我在覈心數據,但我有我的軟件的3個版本,我想保持它們所有的主要對象模型。出於這些原因,我不想在那裏添加一個臨時數據,以避免將來增長不必要的實體。 – Alex
@Alex - 您可以爲此臨時數據存儲創建一個對象模型,然後在使用'-mergedModelFromBundles:'設置Core數據堆棧時將其與公共模型合併。這會讓你擺脫你的共同模式,但讓你在這裏使用它。 –