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

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(使用前将#替换为@)

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

  • 防止点击 MKAnnotation 时检测到 MKMapView 上的触摸事件

    我有一个 UITapGestureRecognizer 当用户点击地图时 它将在我的 MKMap 上隐藏和显示工具栏 简单 但是 当用户点击 MKMapAnnotation 时 我不希望地图以正常方式响应点击 如上所述 此外 当用户点击地图
  • 我如何用 javascript/jquery 进行两指拖动?

    我正在尝试创建当有两个手指放在 div 上时拖动 div 的功能 我已将 div 绑定到 touchstart 和 touchmove 事件 我只是不确定如何编写这些函数 就像是if event originalEvent targetTo
  • 如何在 NSDate 变量中仅设置时间?

    我有 NSDate 变量 只想更改时间 不应更改日期 是否可以 例如 用户在 DatePicker 日期中选择日期间隔 如果是开始日期 我想将时间设置为 00 00 00 如果是结束日期 我将时间设置为 23 59 59 感谢你的帮助 问候
  • 在 Firebase 中构建聊天应用的数据

    我正在关注 Firebase 指南结构化数据 https firebase google com docs database ios structure data flatten data structures对于聊天应用程序 他们建议的结
  • 无法安装企业应用程序 - 此配置文件无法安装在此设备上

    我正在设置 Jenkins 来构建应用程序的企业版本 以便在我们的内部应用程序商店中分发 如果我将应用程序存档在 Xcode 中 然后在手机上下载内置的 ipa 则应用程序安装不会出现任何问题 但是当我使用 Jenkins 生成的具有相同私
  • 以编程方式向 UIButton 标签添加阴影

    我试图向按钮标签添加 1px 黑色阴影 但没有成功 我试过这个 self setTitleShadowOffset CGSizeMake 0 1 但我得到 请求非结构或联合中的成员 setTitleShadowOffset 任何建议都会很棒
  • NSOperation 中委托的使用

    我正在尝试利用CLLocationManager in an NSOperation 作为其中的一部分 我需要能够startUpdatingLocation然后等到收到 CLLocation 后才完成操作 目前我已经完成了以下操作 但是委托
  • CMSampleBufferSetDataBufferFromAudioBufferList 返回错误 12731

    我正在尝试捕获应用程序声音并将其传递给 AVAssetWriter 作为输入 我正在设置音频单元的回调以获取 AudioBufferList 问题始于将 AudioBufferList 转换为 CMSampleBufferRef 它总是返回
  • 从 iOS 应用程序打开 YouTube 频道的最新 URL 方案是什么 [重复]

    这个问题在这里已经有答案了 我想使用 iPhone 应用程序中的频道打开 Youtube 应用程序 以前我使用以下 URL 方案并且工作正常 youtube 用户 频道名称 但在我将 Youtube 应用程序更新到最新的 2 6 0 后 这
  • AFNetworking 上传图片

    我看过一些例子 但我认为我的问题可能出在 PHP 中 我正在尝试使用 AFNetworking 将图像从 iPhone 上传到服务器 这是我的 obj c 代码 IBAction uploadButtonClicked id sender
  • ShareKit + Facebook 身份验证不起作用

    我正在使用 ShareKit 从我正在开发的 PhoneGap 应用程序发布到 Facebook 我在 Facebook 中创建了该应用程序 并在我的项目中安装了该插件 Twitter 工作正常 但当我尝试在 Facebook 上分享时出现
  • iOS 设置 MKMapView 中心,因此提供的位置位于底部中心

    我有一个 MKMapView 和一个永不改变的 CLLocationCooperative2D 我想做的是将地图居中 以便该坐标将放置在地图的底部中心 我可以用简单的方法将地图集中在这个坐标上 MKCoordinateRegion view
  • 如何修复 ReactiveCocoa(带有 CocoaPods)的安装?

    这里是新手 尝试将 ReactiveCocoa 2 2 4 和 CocoaPods 安装到项目中 但在运行时遇到错误 我用过github 上的这个 podspec https github com CocoaPods Specs blob
  • PhoneGap 1.4 封装 Sencha Touch 2.X - 性能怎么样?

    我正在构建一个多平台平板电脑应用程序 仅使用其 Webview 使用 Phonegap 1 4 对其进行包装 然后使用 Sencha Touch 2 框架发挥我的魔力 我所说的多平台是指 iOS 5 X 和 Android 3 0 目前 到
  • 使用prepareForSegue传递数据

    我试图将数据从viewController 1传递到viewController2 我有2个按钮和1个segue 因此有一个segue标识符 这2个按钮 按下时每个按钮应显示 1个标签用于显示标题 1个textView用于显示定义 我很难显
  • 在 JSQMessagesViewController 中显示 LocationMediaItem

    我刚刚尝试实施LocationMediaItem in my Xamarin iOS应用程序使用JSQMessagesViewController 一切都很顺利 唯一的问题是UICollectionView应该显示位置的单元格永远停留在加载
  • 将捕获的图像精确裁剪为 AVCaptureVideoPreviewLayer 中的外观

    我有一个使用 AV Foundation 的照片应用程序 我使用 AVCaptureVideoPreviewLayer 设置了一个预览层 它占据了屏幕的上半部分 因此 当用户尝试拍照时 他们只能看到屏幕上半部分看到的内容 这很好用 但是当用
  • 所有针对 iTunes Connect 的构建,导入此构建时出错 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我将构建上传到应用程序商店 之后它在活动中显示错误 任何人都可以帮帮我 SOLVED 转到构建设置 gt 搜索 bitcode gt 转启
  • 如何从 Firebase 同步检索数据?

    我有两个集合 即用户和问题 根据使用 userId 登录的用户 我检索currQuestion价值来自users收藏 基于currQuestion值 我需要检索question来自 Firebase 的文档Questions收藏 我使用下面
  • iOS 使用 NSColor 与 UIColor?

    有什么区别UIColor and NSColor 什么时候会使用每一种 我碰到NSColor在试图弄清楚的同时UIColor用于 iOS 中的属性字符串 我理解使用UIColor对于 UIKit 等 但我不认为NSColor对于这种事情确实

随机推荐

  • 去除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