私のアプリでは、カメラを使用して1つの画像を作成しようとしていますが、理由もなく常にクラッシュします。
私は長い間この問題に取り組んでいるので、不要に見えるコードを提供しています:ビューコントローラーで:
- (id) init
{
if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{
self = [super initWithNibName:@"WCAddNewWatchViewController_iPhone" bundle:[NSBundle mainBundle]];
}else
{
self = [super initWithNibName:@"WCAddNewWatchViewController_iPad" bundle:[NSBundle mainBundle]];
}
if(self)
{
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
[[self navigationItem]setRightBarButtonItem:self.AddButton];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)ChangeImageButtonTapped:(id)sender {
UIImagePickerController* picker = [[UIImagePickerController alloc] init];
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
}
else
{
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
}
picker.mediaTypes = @[(NSString *) kUTTypeImage];
picker.allowsEditing = NO;
[picker setDelegate:self];
[self presentViewController:picker animated:YES completion:nil];
}
#pragma mark UIImagePickerControllerDelegate
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
NSString *mediaType = info[UIImagePickerControllerMediaType];
[self dismissViewControllerAnimated:YES completion:nil];
if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {
UIImage *image = info[UIImagePickerControllerOriginalImage];
selectedImage = image;
// self.watchImageView.image = selectedImage;
}
NSLog(@"no crash!!!!"); //that's a lie...
}
クラッシュメッセージはありません。ログには、アプリがメモリ警告を受信したことを記録してからクラッシュします。デバイスログには次のように記載されています。
TILメモリ不足のキラーはiOSでは「jetsam」と呼ばれます
誰かが私のコードを見て、私が間違っていることを教えてもらえますか?