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

2024-02-11

我对 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定义块本身之前的变量。

您需要这样做的原因是因为您试图访问定义时块内不存在的变量,因为该变量本身尚未分配。

What is 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];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正确管理addObserverForName:object:queue:usingBlock: 的相关文章

  • UIView晃动动画

    我试图在按下按钮时使 UIView 摇动 我正在调整我找到的代码http www cimgf com 2008 02 27 core animation tutorial window shake effect http www cimgf
  • 将 UIToolBar 添加到所有键盘(swift)

    我正在尝试以尽可能少的重复次数将自定义 UIToolBar 添加到我的所有键盘中 我目前的做法要求我将代码添加到所有 viewDidLoads 中 并将每个文本字段的委托分配给我正在使用的 viewController 我尝试创建自己的 U
  • 错误消息:您输入的捆绑包 ID 已被使用

    我正在尝试发布一个 iPhone 应用程序 这不是第一个 我过去已经发表过其他的 因此 我在第一个和第二个表单中输入了所需的信息 然后填写了第三个大表单 您还可以在其中上传图标和屏幕截图 好吧 我在上传屏幕截图之前按下了 保存 按钮 因为我
  • 在 iOS 应用程序中拨打电话

    我有一些代码尝试在应用程序中进行调用 但它似乎不起作用 UIApplication myApp UIApplication sharedApplication NSString theCall NSString stringWithForm
  • 有什么方法可以询问方法的名称吗?

    我正在尝试调试我正在开发的 iPhone 应用程序 向各种源文件添加 50 条 NSLog 语句的想法让我感到很兴奋 我想做的是写一对陈述 比如 NSString methodName self methodName NSLog metho
  • 如何在 iOS 13 中将 UISegmentedControl 的背景颜色设置为白色

    iOS 13 对 UISegmentedControl 进行了一些更改 包括切换所选片段时的非常漂亮的动画 但是我注意到它没有显示backgroundColor属性正确 它似乎总是有一点色彩 我见过回答如何设置的问题selectedSegm
  • 如何按字母顺序对 UITableView 分区进行排序?

    我有一个包含 3 个类别的分段 UITableView 我正在使用这段代码 NSArray arrayOne NSArray arrayWithObjects one two three four nil NSDictionary dict
  • iOS 7 tabBar 横线,如何去掉?

    Apple 在 iOS 7 中的 tabBar 上添加了一条细线 该线应该在 tabBar 和 UI 之间起到阴影或淡入淡出的作用 由于我使用的是定制的 tabBar 这条线非常令人恼火 你如何删除它 请告诉我这是可能的 否则我需要重新设计
  • 未知异常和崩溃

    当我尝试快速滚动表格视图或从远程重新加载数据时 我的应用程序崩溃了 当我先进行远程获取然后滚动表格视图时 一切似乎都工作正常 我不知道下面的崩溃日志意味着什么 它只是有时工作正常 有时崩溃 Incident Identifier 710A1
  • 如何使用phonegap在iOS应用程序中防止键盘推送webview

    当屏幕底部的输入字段获得焦点时 键盘会向上推我的网络视图 并且页面的上部不再可见 我想防止键盘推高网络视图 有人有主意吗 对焦 设置window scrollTo 0 0 这可以防止键盘完全推高 webview input on focus
  • 在 iOS 上使用 RNCryptor 异步解密大文件

    我需要在 iOS 上使用 RNCryptor 异步解密一个大文件 以便显示进度条 我在任何地方都找不到示例 因此尝试了我猜对的方法 但是 我想出的方法不起作用 解密器的处理程序从未被调用 并且线程在发送所有数据后因 EXC BAD ADDR
  • 使用 UITabBarController 时覆盖整个屏幕的视图?

    我想在 UITabBarController 设置中在整个屏幕上覆盖 HUD 样式的透明图形 执行此操作的按钮位于第一个选项卡的屏幕 FirstViewController 中 并且覆盖层也应该覆盖选项卡 这可能吗 您可以将新视图直接附加到
  • 当应用程序进入前台时,如何重新启动基于块的动画?

    我有以下基于块的动画 UIView animateWithDuration 0 5f delay 0 0f options UIViewAnimationOptionRepeat UIViewAnimationOptionAutorever
  • 如何使用 IOS 12 在 UITableViewCell 中正确添加 UICollectionView

    由于某些原因 在使用 Xcode 10 beta 时 我无法正确显示 tableview 单元格内集合中的某些项目 在过去的四天里我尝试了我所知道的一切 我做了一个小项目样本来看看我的问题是什么 如果有人想在本地运行完整代码 请参见此处 h
  • 防止 iOS 键盘在 cordova 3.5 中滚动页面

    我正在使用 Cordova 3 5 和 jQuery mobile 构建 iOS 应用程序 我在大部分应用程序中禁用了滚动功能 但是 当我选择输入字段时 iOS 键盘会打开并向上滚动页面 我不想要这个功能 由于输入足够高 键盘不会覆盖它 我
  • iOS7 由 Interface Builder 生成的 NSIBPrototypingLayoutConstraint 自动布局约束问题

    以前在 iOS6 中 我的聊天消息视图控制器使用 IB 中精心构建的自动布局约束正确显示和动画 下面是 Xcode 5 中删除了约束的当前视图层次结构 升级到 XCode 5 和 iOS7 后 我发现我需要清除所有旧的约束才能解决默认的半透
  • 在 Objective-C 中的 Swift 类上调用 NSStringFromClass 返回模块损坏的名称

    我知道这个问题 https stackoverflow com questions 24107658 get a user readable version of the class name in swift in objc nsstri
  • 有没有办法在 onclick 触发时禁用 iPad/iPhone 上的闪烁/闪烁?

    所以我有一个有 onclick 事件的区域 在常规浏览器上单击时 它不会显示任何视觉变化 但在 iPad iPhone 上单击时 它会闪烁 闪烁 有什么办法可以阻止它在 iPad iPhone 上执行此操作吗 这是一个与我正在做的类似的示例
  • Glib 在 iPhone 应用程序中的使用

    我想基于现有的开源 Objective C 框架开发一个 iPhone 应用程序 但是该框架广泛使用了 glib 库 我找不到一种方法来构建和包含 iPhone 应用程序的 glib 库 非越狱 有什么办法可以做到这一点 或者有没有推荐的方
  • 致命错误:在 Swift 中解包可选值时意外发现 nil

    所以我试图获取 Swift 中输入字段的文本 这就是我得到的 class ViewController UIViewController IBOutlet var passwordField UITextField IBOutlet var

随机推荐

  • 通过将参数传递给 codeigniter 中的构造函数来加载库

    我正在使用代码点火器 我在 code igniter 中定义了一个库 并期望在其构造函数中包含一个参数 这是我的库代码 My Library Code Test lib php
  • strcpy 传递初始化的空指针 c [重复]

    这个问题在这里已经有答案了 我正在尝试以下代码 int main char yo yo char whaddup NULL strcpy whaddup yo 我遇到了段错误 在这里完成 C 菜鸟 其他地方说我应该初始化whaddup作为一
  • EF4 + MVVM - 在 ViewModel 中公开实体?

    我尝试过模型 视图 视图模型的一些不同实现 并且经常遇到我不确定正确的继续方法的情况 我知道 MVVM 的目标之一是将视图与应用程序逻辑解耦 以便可以在没有视图的情况下测试逻辑 将逻辑放入不依赖于 View 的 ViewModel 中可以解
  • 下载 Azure Web 应用程序?

    我刚刚开设了一个免费的 Azure 试用帐户 并通过各种表格创建了一个测试 Web 应用程序 但是 我想使用 Visual Studio 2015 在本地编辑源文件 是否可以下载注册期间生成的文件 如果可以 如何下载 谢谢你的帮助 您可以使
  • 如何将可变宽度的浮动元素水平居中?

    如何将可变宽度的浮动元素水平居中 编辑 我已经使用包含的div对于浮动元素并指定width对于容器 然后使用margin 0 auto 对于容器 我只是想知道是否可以在不使用包含元素的情况下完成 或者至少不需要指定width对于包含元素 假
  • 编写拼字游戏的算法

    我正在研究一个类似填字游戏的问题 但我不知道如何设计算法 例如 字典里有 汽车 苹果 等词 黑板上给出了 app 一词 有像 l e c r 这样的字母用于造词 所以算法的任务是生成存储在字典中的正确单词 app gt lapp gt le
  • 如何检查字符串是否为数字 Julia

    一直在互联网上搜索试图弄清楚这一点 尝试过isnumeric 但这仅适用于AbstractChar 我宁愿不用tryparse如果可能的话 但如果这是唯一的解决方案 那就这样吧 如果是的话 为什么还没有实现检查字符串是否为数字的函数 我发现
  • BasicAuth、OAuth 和 XAuth 之间有什么区别?

    最近我听说 Twitter 将关闭 Twitter API 上的基本身份验证 并转向 OAuth 所以我想知道BasicAuth OAuth 和XAuth 之间有什么区别 每个 Auth 的优点和缺点是什么 xAuth 是 OAuth 的简
  • 如何将Rtools\bin添加到R中的系统路径

    我正在运行一个闪亮的应用程序https github com MikeJSeo SAM https github com MikeJSeo SAM以及访问它的代码 install packages c samr matrixStats GS
  • Google Analytics Gtag 多个 Analytics 帐户跟踪 ID

    据我所知 谷歌现在似乎正在逐步淘汰analytics js 转而使用他们的标签管理器 如何为多个分析帐户触发 Google Analytics 新的 gtag 跟踪代码 像这样的事情
  • ggplot:根据用户定义的颜色按组划分颜色点

    我试图定义 ggplot 中绘制的点组的颜色 我改编了这篇文章的代码 根据定义的颜色代码为 ggplot 点着色 https stackoverflow com questions 9827193 color ggplot points b
  • NuSOAP 和数组响应

    我有 NuSOAP 网络服务器 server gt register getMembersEvents array date gt xsd string array Events gt tns Events urn my false rpc
  • R:如何读取列线图来预测所需的变量

    我正在使用 Rstudio 我使用函数创建了列线图nomogram从包装中rms使用以下代码 从示例代码复制文档 http www inside r org packages cran rms docs nomogram library r
  • 如何删除闪亮的renderUI中的输入?

    在我闪亮的应用程序中 我有一个使用 renderUI 的动态输入 这工作得很好 程序的另一部分捕获滑块的输入 当应用程序状态发生变化时 例如 当按下 更新模型 按钮时 我仍然需要显示 使用具有类似标签的滑块 但由于它们是 新的 因此需要将值
  • 如何延迟 html 文本的显示,直到加载背景图像精灵?

    这是我想使用 jQuery 控制的一些示例代码 黑色页面背景上的白色按钮背景 ul class buttons li class button displays a href products Products and Services f
  • 连接语句省略条目

    使用 Unix 2 6 18 194 el5 我遇到一个问题 该连接语句省略了匹配中的值 索引 我发现这些值在 11 90 之间 大约 350 万个条目 并且我尝试查找外来字符 但我可能忽略了某些内容 尝试使用 cat v 来查看隐藏字符
  • 雾化T的.Net Collection?

    我正在寻找是否有一个预先存在的 Net 哈希集类型 实现适合原子化一般类型 T 我们有大量相同的对象用于序列化源 需要原子化以节省内存 A Dictionary
  • union '双关语'结构带有“公共初始序列”:为什么 C (99+) 而不是 C++ 规定了“联合类型的可见声明”?

    背景 通过以下方式讨论类型双关的大多数非或实现定义的性质union通常引用以下位 此处通过 ecatmur https stackoverflow com a 31557852 2757035 https stackoverflow com
  • Angular 2 - 警告/提示的表单验证

    我正在尝试添加不会使表单无效的表单验证 验证应仅显示为警告 例如 年龄验证 年龄大于 90 表示警告 年龄大于 120 表示错误 我已经尝试过在表单上使用两个 FormGroup 并在输入字段上使用两个 formControl 仅使用第一个
  • 正确管理addObserverForName:object:queue:usingBlock:

    我对 Objective C 中的块仍然很陌生 想知道我的伪代码是否正确 我不确定仅删除观察者是否足够 或者是否必须调用removeObserver name object void scan Scanner scanner Scanner