0

如果我的应用程序停止运行或设备已关闭,我的文本字段和从图像选择器中选择的图像全部重置为空白,我该如何保留这些信息?

我使用了单例(在其他成员的帮助下),我可以保留我的图像……直到应用程序被杀死或设备被关闭。然后就没了。

.m

- (void)viewDidLoad
{
    singletonObj = [Singleton sharedSingletonController];
    imageView.image = singletonObj.imagePicked;
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidUnload
{
    [self setImageView:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
 {
     return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
 }

 #pragma mark - Action

- (IBAction)done:(id)sender
{
    [self.delegate flipsideViewControllerDidFinish:self];
}

- (IBAction)btn:(id)sender {

    UIImagePickerController * picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;

    if((UIButton *) sender == choosePhotoBtn) {
        picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
    }

    [self presentModalViewController:picker animated:YES];
}

- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info

{
    NSData  *dataImage = UIImageJPEGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"],1);

    UIImage *img = [[UIImage alloc] initWithData:dataImage];
    singletonObj.imagePicked = img;
    imageView.image = img;
    [picker dismissModalViewControllerAnimated:YES];
}
@end
4

2 回答 2

1

内存有两种类型:易失性(RAM)和永久内存(即:硬盘驱动器和其他存储)。

当程序/计算机关闭时,易失性内存被清除并丢失。

使用单例很好,但它与将数据从会话保存到会话完全无关(会话是指程序运行的时间:从启动到终止应用程序)。

您需要使用任何您想要的方法存储您希望从会话到会话保存的数据到文件。根据您要存储的信息,有不同的专用保存机制:

于 2012-05-04T20:50:47.397 回答
0

您将不得不使用核心数据。它可以接受来自 UIIimage 的 NSData 以及 NSStrings。必须使用 appDelegate 中的函数 AppicationWillTerminate,以便在应用程序终止之前存储信息。

这将需要一些体面的工作才能使其正常工作,但没有什么太难的。如果你需要帮助理解核心数据,我推荐这个链接

http://www.raywenderlich.com/934/core-data-on-ios-5-tutorial-getting-started

于 2012-05-03T20:10:25.817 回答