1

あるViewControllerから別のViewControllerに可変配列を渡すときに、メモリの警告が表示されます。可変配列をuiviewcontrollerに渡すより良い方法はありますか?//ここにメモリ警告。

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

2 に答える 2

0

ViewController AからBにNSMutableArrayを渡す最良の方法は、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

これで、移動するViewControllerB someMutableArrayたびにViewControllerBに渡され、次のように設定されます。passedArray

于 2012-11-26T10:18:44.767 に答える
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 に答える