在 ZBarSDK 中使用Block回调传值 Block在扫描成功后 变为空

本文介绍使用ZbarSDK实现二维码扫描功能时遇到的Block回调问题及解决方案,通过调整Block属性从assign为strong解决了回调为空的问题。

今天,使用ZbarSDk 实现二维码扫描的功能,使用block回调传递扫描成功的获取的值   但是在扫码成功后block 就变为空了.....心塞塞的

 代码如下  主页面跳转到扫码界面

    //跳转到扫码界面

    ReadCodeViewController * readVC = [[ReadCodeViewController alloc]init];

    readVC.scanCodeResult = ^(NSString *result)

    {

        [self addPcdMerch:result];

    };

       [self presentViewController:readVC animated:YES completion:nil];

扫码成功后  代码如下

-( void )readerView:( ZBarReaderView *)readerView didReadSymbols:( ZBarSymbolSet *)symbols fromImage:( UIImage *)image

 

{

    [timer invalidate];

    [self.zBarReadView stop];

    _line.frame = CGRectMake(30, 10, 220, 2);

    

    const zbar_symbol_t *symbol = zbar_symbol_set_first_symbol (symbols. zbarSymbolSet );

    

    NSString *symbolStr = [ NSString stringWithUTF8String : zbar_symbol_get_data (symbol)];

 

    if(self.scanCodeResult)

    {

        self.scanCodeResult(symbolStr);

    }

 

    [self dismissViewControllerAnimated:YES completion:nil];

}

最后,发现问题出在对Block 进行申明的时候 

@property (nonatomic, assign) ScanCodeResultBlock scanCodeResult;

使用了assign,将其改为strong后就OK.  

那么我们简单说下assign  strong/weak copy 的使用吧

assign  基本数据类型

strong/weak 各种控件

copy   只用来赋值用的 如 NSString  

最后,将在Block 申明时使用了copy

 

 

转载于:https://www.cnblogs.com/designyshy/p/4913763.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值