Zbar SDK et ios7 / xcode 5 – App atteint 100% de l'utilisation du processeur et de la memory de plus de 100 Mo

Nous utilisons un lecteur de code-barres Zbar des 2 dernières années. Avec iOS 7 et Xcode 5, après la numérisation de 5 codes à barres, l'application atteint 100% de l'utilisation du processeur pour iOS 7 (je peux voir que dans le mode de debugging Xcode) et l'application devient less sensible. Nous n'avons jamais eu de problème dans les versions antérieures d'iOS, tout a bien fonctionné.

Est-ce que la chose a changé dans iOS 7 lié au lancement de la camera et ZBar SDK n'est pas mis à jour? Est-ce que quelqu'un d'autre est confronté au même problème avec iOS 7?

Résolu cela: dans le viewdidload

 readerqr = [ZBarReaderViewController new]; readerqr.readerDelegate = self; readerqr.showsHelpOnFail = NO; ZBarImageScanner *scanner = readerqr.scanner; [scanner setSymbology: 0 config: ZBAR_CFG_ENABLE to: 0]; [scanner setSymbology: ZBAR_QRCODE config: ZBAR_CFG_ENABLE to: 1]; // you can use this to support the simulator if(TARGET_IPHONE_SIMULATOR) { cameraSim = [[ZBarCameraSimulator alloc] initWithViewController: self]; cameraSim.readerView = readerView; } 

crée ZBarReaderViewController *readerqr; en tant que propriété de votre viewcontroller.

pour l'utiliser:

 -(void) showqr:(id)sender { [self presentViewController:readerqr animated:YES completion:nil]; return; } 

De cette façon fonctionne, pas de fuite, pas de cpu 100%

Après avoir vu le même problème,

Je suis passé de

ZBarReaderViewController

à

ZBarReaderView

La partie décevante de ceci, cependant, est que si vous utilisez des fonctionnalités comme Overlay dans le ZBarReaderViewController, vous devez recoder comment tout cela fonctionne et vous devez implémenter des choses comme le démarrage et l'arrêt du scanner, manuellement.

Mais essentiellement, vous avez besoin de quelque chose comme ça dans votre IBAction:

 ZBarReaderView *reader = [ZBarReaderView new]; [self.view addSubview:reader]; reader.readerDelegate = self; reader.tracksSymbols=YES; ZBarImageScanner *scanner = reader.scanner; reader.tag = 99999999; 

// la partie importante ici est de COMMENCER la numérisation

 [reader start]; 

N'oubliez pas de modifier votre délégué dans votre en-tête à ZBarReaderViewDelegate

En outre, la "méthode" de délégué qui est appelée, au less dans mon code, est maintenant (par rapport à l'imagePickerController)

 -(void) readerView: (ZBarReaderView*) view didReadSymbols: (ZBarSymbolSet*) syms fromImage: (UIImage*) img { for(ZBarSymbol *sym in syms) { [view stop]; [self closeCameraScanner]; // I am also setting reader to NIL but I don't really know if this is necessary or not. reader=nil; } } -(void)closeCameraScanner{ UIView * v = [self.view viewWithTag:99999999]; if (nil != v) { [v removeFromSuperview]; } [self.view endEditing:YES]; } 

Donc, c'est une façon rapide et sale de le faire. J'ai un peu de code supplémentaire pour créer manuellement la superposition et pour limiter la taille de l'parsing, mais pour ce qui est de la faire fonctionner, cela a fait l'affaire pour moi.

J'ai résolu le problème que Barry Mc G avait.

J'ai eu les mêmes problèmes même après zBar SDK patché avec iOS7 de http://nerdvision.net/app-development/ios/zbar-sdk . (5ème – 6ème fois ouvrant la page il gèle à 100% CPU.)

Que vous sous-clastiez ZBarViewController ou que vous l'utilisiez directement, vous présentez le controller de vue et l'annulez plus tard lorsque vous avez terminé avec le scanner. J'ai trouvé la raison pour laquelle cela arrive et la raison en est que je n'ai pas arrêté le streaming video. Dans ZBarReaderView, il y a une fonction – (void) stop; et si vous exécutez cette fonction après que vous avez fini avec le scanner, vous ne verrez pas le problème (5ème – 6ème fois ouvrant la page il gèle à 100% CPU.). Au less dans mon cas, cela a fonctionné et j'espère que cela fonctionne pour vous aussi.

J'ai corrigé le problème maintenant en implémentant le Diff depuis la source. Si quelqu'un d'entre vous en a besoin, vous pouvez download le SDK zBar compilé avec le support iOS7 ici.

Vous pouvez juste replace le libzbar.a – ceci devrait fonctionner. Mais j'ai téléchargé le SDK complet comme quelqu'un peut en avoir besoin aussi avec des en-têtes etc.

http://nerdvision.net/app-development/ios/zbar-sdk

J'étais le même problème et facilement réparé. Je ne me souviens pas du code ci-dessous. Vous devez mettre ce code hors de vue du lecteur.

[arrêt de lecture];

problème de surcharge de CPU était causée par un stream de camera en double.

J'ai le même problème que l'OP, j'ai essayé de chercher sur Google ainsi que la stack sur le stream, mais je n'ai pas réussi à find la bonne réponse, donc j'ai posé une question sur ce site. Et j'ai trouvé et résolu mon problème par ma propre réponse .

Donc, cela peut être utile pour d'autres développeurs qui ont le même problème que moi et peut-être économiser votre time.

Merci 🙂

avait les mêmes problèmes, Scanner semble être gelé ..
Je l'ai réparé comme joaquin …
Faire une propriété pour le lecteur et quand vous l'appelez plusieurs fois, vous pouvez vérifier, si un object du lecteur où initialiser …
Voici ce que je fais:

 - (IBAction)ShowZBarReader { // ADD: present a barcode reader that scans from the camera feed if (!self.reader) { self.reader = [[ZBarReaderViewController alloc]init]; } self.reader.readerDelegate = self; self.reader.supportedOrientationsMask = ZBarOrientationMaskAll; ZBarImageScanner *scanner = self.reader.scanner; // zusätliche Configurationen ... [scanner setSymbology: ZBAR_I25 config: ZBAR_CFG_ENABLE to: 0]; // stellt Bild zur verfügung [self presentViewController:self.reader animated:YES completion:nil]; } 

Travaillé parfaitement pour moi! J'espère que cela aide 🙂