2010-07-25 113 views
1

我想在服务器空闲时间保存加载的图像。我使用以下命令将图像保存在iPhone内存中。在iPhone空闲时间保存图像

- (void)saveImage:(UIImage *)image withName:(NSString *)name 
{ 

    NSData *data1 = UIImageJPEGRepresentation(image, 1.0); 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:name]; 
    [fileManager createFileAtPath:fullPath contents:data1 attributes:nil]; 

    if (image==nil) { 
     NSLog(@"Not Saved...:%@",name); 
    } 


} 

但是当他的方法叫我停止了时间....我不想这...我想保存图像时,iPhone是无效.....可以帮助?

谢谢

回答

2

您需要使用线程在后台执行此操作。

如果你支持的iOS 4.0只,这真的很简单:

- (void)saveImage:(UIImage *)image withName:(NSString *)name { 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, NULL), ^{ 
     NSData *data1 = UIImageJPEGRepresentation(image, 1.0); 
     NSFileManager *fileManager = [NSFileManager defaultManager]; 
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
     NSString *documentsDirectory = [paths objectAtIndex:0]; 
     NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:name]; 
     [fileManager createFileAtPath:fullPath contents:data1 attributes:nil]; 

     if (image==nil) { 
      NSLog(@"Not Saved...:%@",name); 
     } 
    }); 
} 

否则,仰望NSThread文档或performSelectorInBackground:withObject:

+0

嗨, 我使用的是iOS 4 .....但是.. 我在代码中出现错误...它在语法上是否正确? – Rony 2010-07-25 06:07:25

+1

哎呦,忘了一个{... – jtbandes 2010-07-25 06:37:51

+0

我想是这样....谢谢:) – Rony 2010-07-25 06:48:37