2016-06-25 4 views
0

NSMutableArrayにUIImageを保存しています。保存した後、私は配列からオブジェクトを話していて、以前の記憶を得ていません。NSMutableArrayに保存中のUIImageメモリの変更

[self.arrselectedPhotos addObject:[UIImage imageWithData:imageData]]; 

現在、サイズは191565(192KB)です。しかし、私が配列からそれを取っているとき、サイズは768786(750KB +)を示します。

UIImage *img=[self.arrselectedPhotos lastObject]; 

NSLog(@"image size: %lu", (unsigned long)[UIImageJPEGRepresentation(img , 1.0) length]); 

何が問題ですか?

答えて

0

3日間のランダムなR & Dの後、私はメモリサイズの増加という問題を発見しました。別のイメージに変換した後、NSDataを配列に保存していました。これがまさにその理由だ。私はNSDataを直接保存する場合、すべてが大丈夫です。

この行が間違っている:

[self.arrselectedPhotos addObject:[UIImage imageWithData:imageData]]; 

、正しい行は次のとおりです。

[self.arrselectedPhotos addObject:imageData]; 

ので、私は簡単にfurthurそれを保存することができます。

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self.arrselectedPhotos]; 
[[NSUserDefaults standardUserDefaults] setObject:data forKey:self.course_name]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 
関連する問題