2012-11-26 22 views
1

从一个视图控制器向另一个视图控制器传递可变数组时,我收到内存警告。 任何更好的方式将可变数组传递给uiviewcontroller? //记忆警告在这里。将数组传递给UIViewController和内存警告

Item *item = [self.items objectAtIndex:index ]; 
+0

一个的viewController =>保存文件阵列.B的viewController = >从文件 – zt9788

+0

读取Arry你可以发布与传递数组到视图控制器有关的代码吗? –

回答

0

传递一个NSMutableArray的从视图控制器A到B的最好办法是做在SEGUE来自ViewControllerA

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"Some segue"]) 
    { 

     [segue.destinationViewController setPassedArray:self.someMutableArray]; 
    } 
} 

而在你ViewControllerB添加到您的ViewControllerB.h文件现在

@property(nonatomic, strong) NSMutableArray *passedArray 

当过您导航到ViewControllerBsomeMutableArray将传递给ViewControllerB并设置为passedArray

0

当A控制器推B控制器时你可以序列化数组。

-(void)viewDidDisappear:(BOOL)animated 
{ 
    NSArray* array = ..... 
    [array addObject:obj];//obj have to implements NSCopying,NSCoding 
    NSData *archiveCarPriceData = [NSKeyedArchiver archivedDataWithRootObject:array]; 
    [[NSUserDefaults standardUserDefaults] setObject:archiveCarPriceData forKey:@"your key"]; 
} 

B控制:

-(void)viewDidLoad 
{ 
    NSData *myEncodedObject = [[NSUserDefaults standardUserDefaults] objectForKey:@"your key"]; 
    NSArray* array = [NSKeyedUnarchiver unarchiveObjectWithData: myEncodedObject]; 
} 

,或者你可以将它保存在文件

{ 
    //save arr to file 
    NSArray* arr; 
    [arr writeToFile:@"path" atomically:YES]; 
    //read arr from file 
    arr = [NSArray arrayWithContentsOfFile:@"path"] 
}