Когда пользователь запускает приложение в первый раз, он получает всплывающее окно и должен сохранить изображение. Он работает на симуляторе и на 4S. Но когда я начинаю с моего 3G, он дает мне ошибку SIGABRT, как только я выбрал картинку. Я предполагаю, что из-за размера изображения, которое слишком подбирается и, следовательно, требует всего барана, - но это довольно странно, потому что я делаю его намного меньше. Вот код:Приложение работает отлично на 4S, но падает на 3G, из-за SIGABRT
- (void)viewDidLoad
{
[super viewDidLoad];
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bild"] == nil) {
picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentModalViewController:picker animated:YES];
}
}
- (void)imagePickerController:(UIImagePickerController *) Picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
double compressionRatio=1;
NSData *imageData=UIImageJPEGRepresentation([info objectForKey:@"bild"],compressionRatio);
while ([imageData length]>5000) {
compressionRatio=compressionRatio*0.20;
imageData=UIImageJPEGRepresentation([info objectForKey:@"bild"],compressionRatio);
}
UIImage *yourUIImage;
yourUIImage = [info objectForKey:UIImagePickerControllerOriginalImage];
imageData = [NSKeyedArchiver archivedDataWithRootObject:yourUIImage];
[[NSUserDefaults standardUserDefaults] setObject:imageData forKey:@"bild"];
[[NSUserDefaults standardUserDefaults] synchronize];
[self dismissModalViewControllerAnimated:YES];
}
Я получаю ошибку SIGABRT на этой линии ImageData = [NSKeyedArchiver archivedDataWithRootObject: yourUIImage];
Следует ли использовать другой способ для изменения размера изображения? Или я должен сохранить его как локальный файл и получить его каждый раз, когда приложение начнется? (Если возможно)
Спасибо за ваш ответ. Я пробовал это так, но, похоже, он не работает. Он не увольняет сборщика. Но может быть, потому что я, возможно, внедрил это неправильно? – Blade