Класс Singleton для UIImagePickerController не помогает - PullRequest
1 голос
/ 01 марта 2012

В моем проекте есть контроллер вида, в котором мне нужно щелкнуть два изображения и показать их в уменьшенном виде на одном экране. Этот процесс можно повторить после загрузки обоих изображений на сервер. Для съемки я использую UIImagePickerController. После 8-кратного нажатия на изображение я получаю предупреждение памяти 1 и 2 уровня.

Когда я ссылался на связанные вопросы в StackOverflow, большинство из них предлагали сделать UIImagePickerController как объект Singleton. Поэтому я создал новый класс Singleton, который является подклассом UIImagePickerController. В моем главном контроллере представления сейчас я создаю объект этого пользовательского класса и использую его повторно. Но, к сожалению, это тоже не помогает. После 8 щелчков изображения я все еще получаю предупреждение о памяти.

Отправка некоторых фрагментов также -

Создание подкласса UIImagePickerController -

@interface ImagePickerControllerSingelton : UIImagePickerController <UIImagePickerControllerDelegate>
{

}
+(ImagePickerControllerSingelton *) sharedPicker;

Реализация синглтон-класса -

static ImagePickerControllerSingelton *sharedInstance = nil;

+(ImagePickerControllerSingelton*) sharedPicker
{
   @synchronized (self){
       if (sharedInstance == nil) {
           [[self alloc] init];
           return sharedInstance;
       }
   }
   return sharedInstance;
}

+ (id)allocWithZone:(NSZone *)zone
{
   @synchronized(self) {
       if (sharedInstance == nil) {
           sharedInstance = [super allocWithZone:zone];
           return sharedInstance;  // assignment and return on first allocation

       }
   }

   return nil; //on subsequent allocation attempts return nil
}

Теперь в основном классе View Controller -

ImagePickerControllerSingelton *imagePicker;

imagePicker = [ImagePickerControllerSingelton sharedPicker];
// Set source to the camera
imagePicker.sourceType =  UIImagePickerControllerSourceTypeCamera;

// Delegate is self
imagePicker.delegate = self;

// Allow editing of image?
imagePicker.allowsEditing = YES;
imagePicker.showsCameraControls = NO;
imagePicker.wantsFullScreenLayout = YES; 

imagePicker.cameraOverlayView = [self createOverlayView]; 
[self presentModalViewController:imagePicker animated:YES];

Я что-то не так делаю? Ребята помогите пожалуйста!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...