2

以下は私のdidFinishPickingMediaWithInfoメソッドであり、不要なコード、保持、リリースなどがたくさんあることを知っています...しかし、これは私がそれを機能させる方法であり、最適化しようとしてそれを壊すことを恐れています。

誰かが私に不要なものを取り除き、この方法をきれいにするのを手伝ってもらえますか?

また、4枚の写真(カメラロールまたはカメラ)をロードするビューコントローラーがあり、ピッカーで2番目または3番目の写真を選択すると、アプリがクラッシュするか、少なくとも次のいずれかのアラートが表示されます。私が間違っているのは何ですか?ありがとう!

-2012-06-23 10:54:07.399 LookdoDia [6525:707]メモリ警告を受け取りました。

-wait_fences:応答の受信に失敗しました:10004003

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

    [self dismissModalViewControllerAnimated:YES];   

    UIImage *img = [info objectForKey:UIImagePickerControllerEditedImage];
    if(!img) img = [info objectForKey:UIImagePickerControllerOriginalImage];

    uiimvImagem.image = [img retain];
    uiimvImagem.alpha = 0;
    UIImageView *tempImageView = [[UIImageView alloc] initWithImage:img];
    self.uiimvImagem = [tempImageView retain];
    [tempImageView release];

    CGRect frame = uiimvImagem.frame;
    frame.size.width = 359;
    frame.size.height = img.size.height / (img.size.width / 359);
    uiimvImagem.frame = frame;

    uisv1.showsVerticalScrollIndicator = NO;
    uisv1.showsHorizontalScrollIndicator = NO;
    uisv1.contentSize = CGSizeMake(uiimvImagem.frame.size.width, uiimvImagem.frame.size.height);
    uisv1.maximumZoomScale = 3.0;
    uisv1.minimumZoomScale = 0.8;
    uisv1.clipsToBounds = YES;
    uisv1.delegate = self;

    [uisv1 addSubview:uiimvImagem];

    [img release];

}
4

1 に答える 1

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

    UIImage *img = [info objectForKey:UIImagePickerControllerEditedImage];
    if(!img) img = [info objectForKey:UIImagePickerControllerOriginalImage];

    uiimvImagem.image = img; //why bother?
    uiimvImagem.alpha = 0; //why bother?
    UIImageView *tempImageView = [[UIImageView alloc] initWithImage:img];
    self.uiimvImagem = tempImageView; //Make sure your self.uiimvImagem is a retained property! Also, don't forget to nil it out in your dealloc method
    [tempImageView release];

    CGRect frame = uiimvImagem.frame;
    frame.size.width = 359;
    frame.size.height = img.size.height / (img.size.width / 359);
    uiimvImagem.frame = frame;

    uisv1.showsVerticalScrollIndicator = NO;
    uisv1.showsHorizontalScrollIndicator = NO;
    uisv1.contentSize = CGSizeMake(uiimvImagem.frame.size.width, uiimvImagem.frame.size.height);
    uisv1.maximumZoomScale = 3.0;
    uisv1.minimumZoomScale = 0.8;
    uisv1.clipsToBounds = YES;
    uisv1.delegate = self;

    [uisv1 addSubview:uiimvImagem];

    [self dismissModalViewControllerAnimated:YES];   

}

これはもう少し良いはずです-残りがどのように接続されているかはわかりませんが(つまり、プロパティ宣言とuisv1がどこに割り当てられているかはわかりません)、まだ正しく見えないものがあります-あなたは割り当てています画像を画像ビューに変換しますが、新しく割り当てられたUIImageViewを使用してすべてを実行します。

于 2012-06-23T14:22:17.970 に答える