ios – 正确管理addObserverForName:object:queue:usingBlock:

ios – 正确管理addObserverForName:object:queue:usingBlock:,第1张

概述我仍然是新的阻塞在objective-c和想知道我是否有这个伪装的代码正确。我不知道如果它足够只是删除观察员或如果我必须调用removeObserver:name:object: -(void) scan { Scanner *scanner = [[Scanner alloc] init]; id scanComplete = [[NSNotificationCenter def 我仍然是新的阻塞在objective-c和想知道我是否有这个伪装的代码正确。我不知道如果它足够只是删除观察员或如果我必须调用removeObserver:name:object:

-(voID) scan {    Scanner *scanner = [[Scanner alloc] init];    ID scanComplete = [[NSNotificationCenter defaultCenter] addobserverForname:@"ScanComplete"                         object:scanner                         queue:nil                         usingBlock:^(NSNotification *notification){                            /*                             do something                             */                            [[NSNotificationCenter defaultCenter] removeObserver:scanComplete];                            [scanner release];                        }];    [scanner startScan];}

更新:我从这个块接收间歇性EXC_BAD_ACCESS,所以这不能是正确的。

解决方法 在定义块本身之前声明scanComplete变量。

你需要这样做的原因是因为你正在尝试访问一个在定义时块中不存在的变量,因为变量本身还没有被赋值。

是什么EXC_BAD_ACCESS?嗯,这是一个异常,当你尝试访问一个不存在的引用时抛出。所以这是你的例子中的情况。

所以如果你在块本身之前声明变量,那么它应该工作:

-(voID) scan {    Scanner *scanner = [[Scanner alloc] init];    __block ID scanComplete;    scanComplete = [[NSNotificationCenter defaultCenter] addobserverForname:@"ScanComplete"                         object:scanner                         queue:nil                         usingBlock:^(NSNotification *notification){                           /*                           do something                           */                           [[NSNotificationCenter defaultCenter] removeObserver:scanComplete];                           [scanner release];                    }];    [scanner startScan];}
总结

以上是内存溢出为你收集整理的ios – 正确管理addObserverForName:object:queue:usingBlock:全部内容,希望文章能够帮你解决ios – 正确管理addObserverForName:object:queue:usingBlock:所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1042650.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存