1

将可变数组从一个视图控制器传递到另一个视图控制器时,我收到内存警告。将可变数组传递给 uiviewcontroller 有什么更好的方法吗?//这里的内存警告。

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

2 回答 2

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"]
}
于 2012-11-26T07:11:08.237 回答
0

将 NSMutableArray 从 ViewController A 传递到 B 的最佳方法是在 ViewControllerA 的 segue 中进行

-(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

现在,当您导航到时ViewControllerB someMutableArray将被传递给 ViewControllerB 并设置为passedArray

于 2012-11-26T10:18:44.767 回答