Henehefu 用 ウィキ

メニュー



- Views

最近の更新

取得中です。

iOS > UIImagePickerController とメモリリーク


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

問題

UIImagePickerController は2回以上 alloc して
カメラで撮影するとメモリリークする。(2011/04/28の時点で)

対処法

一度だけしか生成しないようにシングルトンパターンで対処する。

ヘッダーファイル

#import <UIKit/UIKit.h>
 
// カテゴリを使ってクラスメソッドを追加
@interface UIImagePickerController (Singleton)
+(UIImagePickerController*)defaultPicker;
@end
 

ソースファイル

//ヘッダーファイルをインポートしておくこと
 
static UIImagePickerController* singleton;
 
@implementation UIImagePickerController (Singleton)
 
+(UIImagePickerController*)defaultPicker
{
    if (!singleton) {
        singleton = [[UIImagePickerController alloc] init];
    }
    return singleton;
}
 
@end
 

使い方


//
- (void) showPicker:(UIImagePickerControllerSourceType)sourceType {
#if 0
    // こっちだと2回目以降メモリリーク
    UIImagePickerController* picker = [[[UIImagePickerController alloc] init] autorelease];
#else
    // こっちならOK
    UIImagePickerController* picker = [UIImagePickerController defaultPicker];
#endif
    picker.sourceType = sourceType;
    picker.mediaTypes = [NSArray arrayWithObject:(NSString*)kUTTypeImage];
    picker.delegate = self;
    picker.allowsEditing = YES;
    [self presentModalViewController:picker animated:YES];
 
}
 

タグ一覧