2014-11-27 3 views
-1

Я использую библиотеку zxing для сканирования штрих-кодов. Всякий раз, когда я сканирую неправильный штрих-код, почтовый композитор откроет письмо, в котором говорится, что неверный штрих-код сканируется. Когда мы отказываемся от почтового композитора, мы можем снова сканировать. Однако, когда я уволить почты композитора, мое приложение получает разбился, говоря «[CALayer isKindOfClass]: сообщение, отправленное на высвобождены, например»[CALayer isKindOfClass:]: сообщение отправлено на освобожденный экземпляр

int main(int argc, char * argv[]) 
{ 
    @autoreleasepool { 
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));// app crashed at this line 
} 
} 

Вот что у меня есть

-(void)viewDidDisappear:(BOOL)animated{ 

[super viewDidDisappear:animated]; 

[self.capture.layer removeFromSuperlayer]; 

    [self.view.layer removeFromSuperlayer]; 
    self.view = nil; 
    self.capture=nil; 

} 


- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 

self.capture.delegate = self; 
self.capture.layer.frame = self.view.bounds; 
_scanRectView.layer.borderColor=[UIColor redColor].CGColor; 
_scanRectView.layer.borderWidth = 2; 


CGAffineTransform captureSizeTransform = CGAffineTransformMakeScale(320/self.view.frame.size.width, 480/self.view.frame.size.height); 
self.capture.scanRect = CGRectApplyAffineTransform(self.scanRectView.frame, captureSizeTransform); 
} 


- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

//initialising the zxing library to start the camera 
self.capture = [[ZXCapture alloc] init]; 
self.capture.camera = self.capture.back; 


self.capture.focusMode = AVCaptureFocusModeContinuousAutoFocus; 
self.capture.rotation = 90.0f; 

self.capture.layer.frame = self.view.bounds; 
[self.view.layer addSublayer:self.capture.layer]; 



[self.view bringSubviewToFront:self.scanRectView]; 
[self.view bringSubviewToFront:self.decodedLabel]; 


} 

Пожалуйста, скажите мне, где я делаю неправильно.

Заранее спасибо.

ответ

1

Я думаю, что ваш метод viewDidDisappear неправильно

будет

-(void)viewDidDisappear:(BOOL)animated{ 

    [super viewDidDisappear:animated]; 
    [self.capture.layer removeFromSuperlayer]; 
    self.capture=nil; 
} 


- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 

    //initialising the zxing library to start the camera 
    self.capture = [[ZXCapture alloc] init]; 
    self.capture.camera = self.capture.back; 


    self.capture.focusMode = AVCaptureFocusModeContinuousAutoFocus; 
    self.capture.rotation = 90.0f; 

    self.capture.layer.frame = self.view.bounds; 
    [self.view.layer addSublayer:self.capture.layer]; 



    [self.view bringSubviewToFront:self.scanRectView]; 
    [self.view bringSubviewToFront:self.decodedLabel]; 


    self.capture.delegate = self; 
    self.capture.layer.frame = self.view.bounds; 
    _scanRectView.layer.borderColor=[UIColor redColor].CGColor; 
    _scanRectView.layer.borderWidth = 2; 


    CGAffineTransform captureSizeTransform = CGAffineTransformMakeScale(320/self.view.frame.size.width, 480/self.view.frame.size.height); 
    self.capture.scanRect = CGRectApplyAffineTransform(self.scanRectView.frame, captureSizeTransform); 
} 


- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
} 
+0

я удалил эти строки с точки зрения действительно исчез, приложения не разбивая в настоящее время. Но, мое приложение должно открыть слой камеры и начать сканирование, но слой замораживается .... код в поле зрения не загружается, я думаю! –

+0

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

+0

ok T_77. Скажите, пожалуйста, что вы используете для захвата ZXCapture *. – ObjC

Смежные вопросы