移除观察员是强制性的(必要的)吗?

2024-01-10

有一个观察者,我在整个应用程序生命周期中都需要它,我应该删除它吗? 我认为GC应用程序关闭后将删除它,对吗? 如果是的话,我什么时候删除它?在deinit?


如果您为 iOS 8 及之前版本提供支持。你必须移除里面的观察者dealloc or viewWillDisappear。可以找到更详细的答案here https://stackoverflow.com/a/15941336/4539192.

如果您从 iOS 9 开始提供支持,则不再需要手动删除观察者。来自苹果文档:

在 OS X 10.11 和 iOS 9.0 NSNotificationCenter 和 NSDistributedNotificationCenter 将不再向 可能被取消分配的注册观察员。如果观察者能够 存储为零弱引用,底层存储将 将观察者存储为调零弱参考,或者如果 对象不能弱存储(即它有一个自定义的保留/释放 阻止运行时存储的机制 弱对象)它将将该对象存储为非弱归零 参考。这意味着观察员无需取消注册 在他们的释放方法中。

可以找到更详细的解释here https://developer.apple.com/library/content/releasenotes/Foundation/RN-Foundation/index.html#10_11NotificationCenter.

Note:但是,在使用上面链接的文档中提到的基于块的通知时要小心。

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

移除观察员是强制性的(必要的)吗? 的相关文章

随机推荐

  • 去除img边框

    我的 img 边框有问题 我对所有图像使用以下代码 但边框并没有消失 有人能告诉我删除 img 边框的正确方法吗 div class mosaic overlay img class cover1 div cover1 width 300p
  • 如何将行内的容器拉伸到最大可用高度?

    我有一个 Row 小部件 其中有许多容器 其高度取决于其内容 我希望它们的高度相同 如何在不硬编码其值的情况下实现这一目标 This is something I have 但我希望第一张卡自动获取行的高度 这样两张卡的高度就相同 我怎样才
  • 在 ExpandableListView 上滚动时,选择复选框会重复

    我有一个 BaseExpandableListAdapter 下面的代码 它操纵 ExpandableListView 和一个名为 Checklist 的模型 检查表模型包含一个类别列表 类别是检查列表 支票是低点清单 Low 包含一个布尔
  • 在 ubuntu 上安装 sbt [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我已经在 Ubuntu 上安装了 sbt bin sbt bin ls classes sbt sbt launch jar target
  • 'pow' 未在此范围内声明

    include
  • C# 添加或读取 C# exe 文件

    是否可以从另一个 C 项目 Windows 窗体 打开 C exe 文件 控制台应用程序 并从 exe 文件写入或读取不同的文本值 我正在使用 user32dll 来处理 exe 文件 谢谢 我确实使用此方法在 exe 文件中添加文本 Cl
  • 当 x 轴值为日期时,注释绘图很困难

    这是我的数据框 gt s Date Average Treatment SE 1 2014 10 15 4 875 1 1 6304852 2 2014 11 12 6 250 1 0 9955257 3 2014 12 11 0 250
  • 如何在 Bootstrap 3 Carousel 中输出当前幻灯片编号?

    我希望使用 Bootstrap 3 的 Carousel 插件输出当前幻灯片编号 理想情况下 我希望将其作为轮播 div 下方的文本 例如 此处轮播 3 of 9 我可以使用 CMS 中的函数输出图像总数 例如上例中的 9 个 但我不知道如
  • C# 获取句柄列表,AcessViolationException

    Info Net 4 5 测试于 Win7 64位 Win10 64位 虚拟盒 我正在尝试获取外部进程的句柄列表并将它们的名称作为字符串返回 以便我可以在之后关闭特定的进程 因此我使用 Win32API 编写了这个函数 它将检查句柄是否是我
  • AM_LDFLAGS 和 LDFLAGS 有什么区别

    我想知道 AM LDFLAGS 和 LDFLAGS 之间有什么区别 因为我遇到了错误 error AM LDFLAGS must be set with before using 当我在 foreach 循环中使用 AM LDFLAGS 时
  • 接口与抽象类(一般面向对象)

    我最近接受了两次电话采访 被问到接口和抽象类之间的区别 我已经把我能想到的各个方面都解释了 但他们似乎在等我说一些具体的东西 而我也不知道那是什么 根据我的经验 我认为以下内容是正确的 如果我遗漏了一个要点 请告诉我 界面 接口中声明的每个
  • 如何从文档中排除某些字段

    我有以下简单的示意图 var userSchema new Schema name String age Number creator Schema ObjectId var User mongoose model User userSch
  • Python,二维列表和坐标

    我有一个二维列表 def list list1 1 2 3 4 5 list2 0 0 0 0 0 list3 6 7 8 9 10 list list1 list2 list3 for i in list print i list 6 的
  • 如何从 Maven Java 项目加载外部属性文件

    我有一个 Maven Java 项目 其属性文件位于 src main resources 目录中 我打包了jar 但jar中没有属性文件 因此可以将其部署到具有不同设置的不同环境中 但单元测试失败 项目结构是 Properties App
  • asp.net core 1.0 web api使用camelcase

    On RC2相同的代码返回带有驼峰大小写的 json 格式 在 netcore 1 0 发布后 我开始了新项目 相同的代码以小写形式返回 json 尝试了多种解决方案 但没有一个有效web api serialize properties
  • 如何在 PHP 中反转多维数组

    反转多维数组的最简单方法是什么 我所说的反转是指与 array flip 类似 e g 0 5 var name data 0 3 var name2 data2 1 var name3 data3 0 1 4 var name4 data
  • 使用 webdriverjs 等待页面完全加载

    使用 JavaScript 的 selenium webdriver 等待页面完全加载的最佳方法是什么 我注意到这个问题 https stackoverflow com questions 5868439 wait for page loa
  • Java ExecutorService:我应该在使用execute之前加锁吗?

    我的班级组织如下 public class MyClass ExecutorService pool public MyClass pool inited by a class that implements ExecutorService
  • UIButton 过度敏感

    我在 tableviewCellWithReuseIdentifier 中定义了一个 UIButton 该按钮可以使用 但非常敏感 如果我只需点击按钮 它就会起作用 长时间按下它不会触发该操作 即使它确实闪烁表明它知道它被按下了 为什么会发
  • 移除观察员是强制性的(必要的)吗?

    有一个观察者 我在整个应用程序生命周期中都需要它 我应该删除它吗 我认为GC应用程序关闭后将删除它 对吗 如果是的话 我什么时候删除它 在deinit 如果您为 iOS 8 及之前版本提供支持 你必须移除里面的观察者dealloc or v