2014-02-21 2 views
0

Я пытаюсь реализовать некоторый считыватель кода qr, используя ZBar. Через некоторое время мне удалось читать, но после нескольких чтений приложение становится все медленнее и медленнее (пока практически не реагирует). Этот SDK совместим с iOS7? Каркасы: libiconv.dylib, libinfo.dylib, QuartzCore, CoreVideo, CoreMedia, AVFoundation, CoreGraphics, UIKit, XCTestZBar SDK замедляется в IOS7

- (IBAction)scan:(id)sender { 
    //initialize the reader and provide some config instructions 
    ZBarReaderViewController *reader = [ZBarReaderViewController new]; 
    reader.readerDelegate = self; 

    [reader.scanner setSymbology: ZBAR_I25 
          config: ZBAR_CFG_ENABLE 
           to: 1]; 
    reader.cameraFlashMode=UIImagePickerControllerCameraFlashModeOff; 
    reader.readerView.zoom = 1.0; // define camera zoom property 

    //show the scanning/camera mode 
    [self presentModalViewController:reader animated:YES]; 
    // Do any additional setup after loading the view from its nib. 
} 
- (void) imagePickerController: (UIImagePickerController*) reader 
didFinishPickingMediaWithInfo: (NSDictionary*) info { 

    //this contains your result from the scan 
    id results = [info objectForKey: ZBarReaderControllerResults]; 

    //create a symbol object to attach the response data to 
    ZBarSymbol *symbol = nil; 

    //add the symbol properties from the result 
    //so you can access it 
    for(symbol in results){ 

     //symbol.data holds the value 
     NSString *upcString = symbol.data; 

     //print to the console 
     NSLog(@"the value of the scanned UPC is: %@",upcString); 

     NSMutableString *message = [[NSMutableString alloc] 
            initWithString: @"Scanned Barcode: "]; 

     [message appendString:[NSString stringWithFormat:@"%@ ", 
           upcString]]; 

     //Create UIAlertView alert 
     UIAlertView *alert = [[UIAlertView alloc] 
           initWithTitle:@"Product Barcode" message: message delegate:self 
           cancelButtonTitle:@"Cancel" otherButtonTitles: nil]; 

     self.viewResult.text = upcString; 
     [alert show]; 
     //After some time 
     [alert dismissWithClickedButtonIndex:0 animated:TRUE]; 

     //make the reader view go away 
     [reader dismissModalViewControllerAnimated: YES]; 
    } 

} 

EDIT: После 4 или 5 чтений, это память и ЦП потребление ->http://diogomend.me/images/capt.png. Christ: D

+0

Если вам нужно развернуть только на iOS7 Я предлагаю вам использовать новые API-интерфейсы AVFoundation для обнаружения штрих-кода, qrcode и т. Д. – Andrea

+0

Почему вы не используете AVCaptureSession (natif) в iOS7 для сканирования штрих-кода. Взгляните на этот учебник: http://www.renaudpradenc.com/?p=453 –

+0

приложение должно работать и на iOS6 :(В iOS6 у меня нет этой проблемы замедления ... странно ! –

ответ

2

Ну, после проверки этого вопроса Memory related issue of ZBarReaderViewController in iOS 7, мне удалось решить проблему. Линии я добавил следующие:

(в моем viewcontroller.h)

@property (strong,nonatomic) ZBarReaderViewController *reader; 

(в моем viewcontroller.m)

if(self.reader) 
{ 
    [self.reader.readerView stop]; 
    for(UIView *subViews in self.reader.view.subviews) 
    [subViews removeFromSuperview]; 
    [self.reader.view removeFromSuperview]; 
    self.reader.view = nil; 
} 
_reader = [ZBarReaderViewController new];