将可变数组从一个视图控制器传递到另一个视图控制器时,我收到内存警告。将可变数组传递给 uiviewcontroller 有什么更好的方法吗?//这里的内存警告。
Item *item = [self.items objectAtIndex:index ];
将可变数组从一个视图控制器传递到另一个视图控制器时,我收到内存警告。将可变数组传递给 uiviewcontroller 有什么更好的方法吗?//这里的内存警告。
Item *item = [self.items objectAtIndex:index ];
当 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"]
}
将 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