NSNotification:对象属性必须是 self 吗?

2024-01-04

到目前为止,我一直在使用 NSNotificationCenter 的方法postNotification:aString object:anyObjectOfInterestForTheReceiver。但最近我在文档中读到object字段只能被传递self。是否有任何我不知道的可怕副作用应该说服我只通过self将来,或者传递任何对象都可以吗? 谢谢你!


您可以传递任何对象作为object通知,但惯例是object是“正在执行通知的事情”(并且您将其他相关状态放入userInfo字典)。

究其原因,大多是self是因为通常执行通知的对象通常想要引用自身。这样,例如,如果您有很多Foo对象,其中一个完成了任务并发送了通知,任何观察到通知的人都可以查看object看看哪个Foo就是有问题的人。观察者还可以选择仅观察来自特定的通知Foo当你遵循这个计划时。

在发布通知时使用除“自身”之外的其他内容也是合理的(尽管不太常见)——假设您“代表”另一个对象发送通知。例如,您可以是一个单例控制器对象,它完成一个Bar任务,您可以发送包含特定任务参考的通知Bar作为对象。这比使用单例作为更有意义object,因为那里没有有趣的差异。

再次强调,这只是一个(有用的)约定。当你创建自己的通知时,你需要定义通知的“契约”,即名称、使用什么样的对象作为通知object,以及里面有什么userInfo.

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

NSNotification:对象属性必须是 self 吗? 的相关文章

  • Eddystone 信标检测问题

    以下是我使用 iPhone iOS 9 检测 Eddystone 的代码 void viewDidLoad super viewDidLoad if CLLocationManager locationServicesEnabled loc
  • 如何执行 UIAlertAction 的处理程序?

    我正在尝试编写一个帮助程序类以允许我们的应用程序支持两者UIAlertAction and UIAlertView 然而 当写alertView clickedButtonAtIndex 方法为UIAlertViewDelegate 我遇到
  • 正在解除分配时尝试加载视图控制器的视图... UISearchController

    我有创建一个的代码UISearchController in my UIVIew sviewDidLoad self resultSearchController let controller UISearchController sear
  • Swift 中 UIViewController 子类成员的双重初始化

    我想制作一个自定义容器视图控制器并向其子类添加一些成员UIViewController 当我尝试使用以下代码从应用程序委托初始化它时 self window UIWindow frame UIScreen mainScreen bounds
  • Braintree DropIn + Apple Pay,未出现 Apple Pay 项目

    我成功调用DropIn来自 Braintree SDK 的视图 这BTDropInRequest设置应显示三项 PayPal 信用卡 苹果支付 但由于某种原因在DropIn视图仅呈现两个项目而不是三个 PayPal 信用卡 我做错了什么 准
  • 将 NSDate 转换为 SWIFT 中具有特定时区的字符串

    在我的核心数据库中 我有一个带有 NSDate 属性的 新闻 实体 我的应用程序遍布全球 新闻已发布2015 09 04 22 15 54 0000法国时间 GMT 2 为了保存日期 我将其转换为 UTC 格式 let mydateForm
  • 使用 AFNetworking 的 setImageWithURL 时如何配置缓存

    我在用着setImageWithURL在我的应用程序中下载一些图像 是否可以 指定此图像必须在缓存中保存多长时间 例如 1 周 指定缓存的最大总大小有多大 例如 200 兆 查看图像缓存中有什么 清除缓存 文档 http engineeri
  • iOS 应用内购买沙箱测试显示我的密码错误

    我在 itunesconnect 中创建了一个 Sandbox Tester 帐户 并通过我在网络上注册的电子邮件验证了电子邮件地址 验证后 我尝试使用沙盒帐户在我的应用程序中购买商品 并收到更改密码的提醒 所以我做了 然后我尝试使用新密码
  • 设置使用 iPhone 相机拍摄的图像的类型

    如果我们使用 iPhone 相机拍摄照片 图像将默认以 JPEG 格式保存 我想以其他格式 例如 PNG 保存捕获的图像 是否可以 当我们从应用程序调用 iPhone 相机时 是否可以通过代码执行此操作 我们可以设置捕获图片后必须保存的图像
  • iOS UITableViewCell需要按两次才能调用didSelectRowAtIndexPath

    我有一个 UITableView 有时需要您触摸它两次才能选择一个单元格 更多细节 仅当表格一直向上或一直向下滚动后才需要两次触摸 只需第二次触摸即可呼叫didSelectRowAtIndexPath 当表格以自然的 向上滚动位置 打开时
  • 从后台唤醒时应用程序会重新启动

    iOS 大师您好 我已经广泛搜索了答案 但找不到答案 我打赌对我的问题的第一个答复将是另一个类似的问题 但我找不到它 不管怎样 我的问题是我正在运行一个简单的地图应用程序 用户可以在地图上放置图钉 并在放置的图钉周围有一个自定义的圆圈覆盖
  • 如何改进 iOS 中的 TWTweetComposeViewController 代码?

    我已经实现了以下代码来进行 Twitter 共享 在我的代码中 我尝试测试 iOS 5 如果这不起作用 我会回到使用 ShareKit 的 Twitter 代码进行共享的旧方式 我向同事展示了代码 他建议我的代码可能有缺陷 我需要做两件事
  • 移动 Safari 中的文件上传和 EXIF

    正如这些问题中所指出的 在某些情况下 iOS 上上传的照片的地理位置和其他 EXIF 元数据会被删除 在 safari 中 https apple stackexchange com questions 326789 gps exif fr
  • prepareForSegue 和代表

    我有一个有两个 segue 的应用程序 在其中一个 Segue 中 当前视图控制器成为委托 而另一个则不是 void prepareForSegue UIStoryboardSegue segue sender id sender if s
  • 在 Objective C 中使用下划线作为属性名称前缀 [重复]

    这个问题在这里已经有答案了 我以前避免在变量名中使用下划线 这可能是我大学 Java 时代的遗留下来的 因此 当我在 Objective C 中定义属性时 我自然会这样做 In the header interface Whatever N
  • Swift 3 '[UIApplicationLaunchOptionsKey:任意]?'无法转换为 '[String : NSString]'

    我有一个 TVOS 应用程序已从 Swift 2 转换为 Swift 3 但出现以下错误 我不确定如何让它安静下来 UIApplicationLaunchOptionsKey 任意 无法转换为 String NSString 它出现在这段代
  • 在 iOS 中管理和解除多个视图控制器

    我是一名 iPhone 新手程序员 在开发我的第一个游戏 应用程序时 我为自己提出了一个问题 创造了一个问题 我对此进行了研究 并认为我已经看到了答案 但我不明白如何使它们适用于我的应用程序 我有一个游戏 有几个视图控制器 欢迎 玩 高分
  • 为什么我们在 @synchronized 块中传递 self ?

    我猜 synchronized 块不依赖于对象 而是依赖于线程 对吗 既然如此 我们为什么要传递 self 呢 synchronized是语言提供的用于创建同步作用域的构造 因为使用简单的全局共享互斥锁效率非常低 因此序列化每个单独的互斥锁
  • 应用程序图标未刷新

    我更改了新版本应用程序中的图标图像 并且我在设备中安装了旧版本应用程序 然后我安装了新版本 它在 iOS 5 中运行良好 但在 iOS 6 中 图标没有刷新 它仍然显示旧版本图标 徽标 如果没有安装旧版本应用程序 该设备在 iOS 5 和
  • 适用于 iOS 的 Google Cast SDK 2.3.0 不支持 64 位

    似乎是适用于 iOS 的 Google Cast SDK 2 3 0 版本 https developers google com cast downloads GoogleCastFramework 2 3 0 Release zip停止

随机推荐

  • 如何解决android中添加内容之前必须调用requestFeature()

    我正在创建一个应用程序 其中包含当我们单击按钮时在警报对话框中弹出的简单而小的注册表单 但它显示了一个名为的错误android util AndroidRuntimeException 添加内容之前必须调用 requestFeature 请
  • Go 中的 var 与 :=

    在此处的 Go Web 服务器示例中 http golang org doc effective go html web server http golang org doc effective go html web server 以下代
  • 同一 Ubuntu 机器上的多个 Python 版本

    我在 Ubuntu 机器上 自动安装了 Python 3 10 为了在共享代码库中执行给定任务 我需要使用 Python 3 9 来解决新版本的一些问题 我希望在我的机器上安装这两个Python 并且能够使用这两个Python 并在需要时进
  • Xcode4 显示所有输出(删除“仅显示前 200 个通知”)

    Apple在Xcode4最新版本中添加了新bug 如果输出超过200行 则全部删除 显然 如果有输出 那么它的存在是有原因的 我需要看到它 我尝试寻找首选项 GUI 或按钮 但找不到任何内容 他们肯定没有对其进行硬编码以防止您看到自己的输出
  • 使用 Node.js 进行 SOAP 请求

    嗨 任何人都可以帮助我吗 如何请求 SOAP Web 服务并获取 xml 响应 塞纳里奥 使用soap ui 我发送带有用户名 密码身份验证的wsdl url 并且我还将发送soap xml数据 然后我会得到响应 如何使用 Nodejs 或
  • 如何将 Either 转换为 MonadThrow

    我有一个通过处理错误的函数Either funErrViaEither a gt Either SomeException b 我想在另一个应该更灵活并返回的函数中使用这个函数MonadThrow m funErrViaThrow Mona
  • JavaFX 冻结问题

    我正在摆弄 JavaFX API 由于某种原因 这个应用程序似乎在 看似 随机的时间后冻结了 它是一个制作红绿渐变图案的应用程序 并且有一个很酷的动画与之配合 当应用程序运行时 按 Enter 键 动画就会开始 一段时间后 就像我之前所说的
  • 如何在 gitignore 中使用条件

    我管理着几个pdf and graffle使用 git 生成文件 我想添加pdf仅当以下情况时才将文件存储到存储库graffle具有相同文件名的文件不存在 例如 G 只添加foo pdf and bar graffle进入目录中的存储库 l
  • 如何更改 wp7 中列表框项目的可见性属性?

    例如 有一个列表框
  • 让lua脚本等待/暂停/睡眠/阻塞几秒钟的最简单方法?

    我不知道如何让 lua 执行任何常见的计时技巧 例如 sleep 停止线程上的所有操作 暂停 等待 不要继续下一个 命令 但允许其他代码 申请继续 阻止 不要继续执行下一个命令 直到 当前返回 我读过 while os clock
  • 如何在 Swift 中使用 NSURLSessionDataTask [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 有人能帮我吗 我找不到完成语法的好例子 var url NSURL NSURL URLWithString https itunes app
  • 反射:如何使用参数调用方法

    我试图通过带有参数的反射来调用方法 我得到 对象与目标类型不匹配 如果我调用一个不带参数的方法 它工作得很好 如果我调用该方法 则基于以下代码Test TestNoParameters 效果很好 但是如果我打电话Test Run 我得到一个
  • 合并 2 个分支时 Xcode 6.0.1 崩溃

    每次我尝试将一个分支合并到另一个分支时 Xcode 6 0 1 都会崩溃 到目前为止我有 尝试从另一台计算机合并相同的分支 显然之前推送和拉动它们 但它仍然崩溃 从 错误分支 创建一个新分支 在其中添加一个空格 并将其成功合并回 错误分支
  • 如何从 Objective-C 中的其他类访问 IBOutlet?

    我如何访问IBOutlets是在另一个类中创建的吗 例如 如果我有一个IBOutlet in Class A我怎样才能访问Class B 如果我无法访问IBOutlets来自其他课程的解决方法是什么 你需要让你的IBOutlet a pro
  • 获取存储在 React Native 文档目录中的文件名数组

    CASE 我已将音频文件下载到名为 tracks 的文件夹下的文档目录 如下所示 RNFetchBlob fs dirs DocumentDir tracks 毫无疑问 我可以按每个音频的名称来阅读它们 RNFetchBlob fs dir
  • 更新 Android Studio 3.1 后,发布签名的 APK 时出现错误

    将我现有的项目迁移到 Android Studio 3 1 后 它无法编译 以下是日志详细信息 org gradle api tasks TaskExecutionException 任务 app mergeReleaseResources
  • Facebook 喜欢视频自动播放和暂停

    在我的网站上有一个包含许多视频的页面 当 iframe 视频在视口中完全可见时 视频应自动播放 当视频移动到视口上方时 视频应该暂停 就像我们在 Facebook 中看到的那样 Note 我在用着iframe 但不是html5视频元素 虽然
  • 在 vanilla JS 中触发 Enter 按键

    我试图在我的输入上触发输入按键事件 而无需实际按下输入键 更多的是加载 我发现初始化键盘事件 https developer mozilla org en US docs Web API KeyboardEvent initKeyboard
  • Matplotlib:如何在 x 轴上绘制带有分类数据的线?

    我正在尝试绘制几行 不是条形图 如这个案例 https stackoverflow com questions 7559242 matplotlib strings as labels on x axis 我的 y 值是float 而 x
  • NSNotification:对象属性必须是 self 吗?

    到目前为止 我一直在使用 NSNotificationCenter 的方法postNotification aString object anyObjectOfInterestForTheReceiver 但最近我在文档中读到object字