如何让RACSignal变热?

2023-11-27

ReactiveCocoa 可以通过调用它的方法将信号转换为“热”信号-subscribeCompleted:。但我认为如果您不关心结果(即没有订阅者),则此方法非常冗长。

RACDisposable *animationDisposable = [[self play:animation] subscribeCompleted:^{
    // just to make the animation play
}];

而这三句话并不足以表达我的意图。

有没有类似目的的方法?谢谢!


我只想让它变热(=让它运行一次)。

“你一直用这个词。我不认为它的意思是你认为的意思。”

A “热信号”是一个发送值的信号(并且可能确实有效),无论它是否有任何订阅者。 A“冷信号”是一个信号,它推迟其工作和任何值的发送,直到有订阅者为止。冷信号将执行其工作并发送值each订户。

如果您想让冷信号仅运行一次但有多个订阅者,您需要组播信号。多播是一个非常简单的概念,其工作原理如下:

  1. 创建一个 RACSubject 来代理您想要执行一次的信号发送的值。
  2. 根据需要多次订阅该主题。
  3. 创建对您只想执行一次的信号的单个订阅,并且对于信号发送的每个值,将其发送到主题[subject sendNext:value].

但是,您可以而且应该使用RACMulticastConnection用更少的代码完成上述所有操作:

RACMulticastConnection *connection = [signal publish];
[connection.signal subscribe:subscriberA];
[connection.signal subscribe:subscriberB];
[connection.signal subscribe:subscriberC];
[connection connect]; // This will cause the original signal to execute once.
                      // But each of subscriberA, subscriberB, and subscriberC
                      // will be sent the values from `signal`.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让RACSignal变热? 的相关文章

  • 在 Core Api 上自动登录 Dropbox 帐户,无需登录提示

    我是 iOs 开发新手 正在创建一个使用我自己的 Dropbox 帐户的应用程序 我希望我的应用程序自动登录我的帐户 以便能够修改和添加我的应用程序文件夹中的文件 文件说我应该打电话 DBSession sharedSession link
  • 在 MLMediaLibrary 中加载媒体源时出错

    我在加载时遇到错误mediaSourcesMac OS X 中的属性 我正在尝试使用以下方法获取 Apple Photos 源MLMediaLibrary class 我的应用程序是沙盒的 并且具有图片文件夹的只读权限 我收到错误 MLMe
  • 每次打开应用程序时运行动画

    我在 viewDidLoad 中有一个动画 该动画在应用程序第一次启动时运行 如果退出应用程序 然后再次启动它 动画将不会播放 我该如何让动画在每次打开应用程序时播放 谢谢你的帮助 在 iOS 4 中 按主页按钮不会终止应用程序 而是将其挂
  • 比较两个 CGPoint 是否相等:对于输出相同点的两个对象返回不相等?

    根据这个问题 https stackoverflow com questions 26335052 how to compare cgpoints in swift 使用 和 应该可以让你检查两个之间是否相等CGPoint对象 然而 下面的
  • 在 iOS 上使用 MDCBottomNavigationBar 切换视图控制器

    我正在尝试创建一个使用 Material Design 库的底部导航功能的 iOS 应用程序 我可以获得带有底部导航栏的视图控制器来编译和显示 但我无法添加其他视图控制器并在单击不同选项卡时在它们之间切换 我将所有内容简化为两个文件 一个是
  • 如何在 Objective-C 中解析包含 XML 的 NSString?

    在我的 iPhone 应用程序中 我有以下 NSString NSString myxml
  • iOS 9 + Xcode 7 的 Segue 上的应用程序导致整个设备崩溃

    更新 我已经在这一年中使用了我的一个 DTS 目前与 Apple 支持工程师合作 根据他的建议 我还为此创建了一个错误报告 随着时间的推移 我将更新此线程 希望能产生最终的解决方案 不知何故 我找到了一种方法来创建一个可以真正重新启动模拟器
  • 通过 IOS Google Drive SDK 列出 Google Drive 的所有文件夹

    实际上我将 google drive sdk 与我的 ios 应用程序集成了 我可以通过适用于 iOS 的 google drive sdk 在 Google Drive 上上传指定文件 此外 我想提供一个功能 用于从可用文件夹中选择一个文
  • 从本机代码访问 AsyncStorage

    我需要使用 JS 代码中的 AsyncStorage 将数据保存在本地存储中 我想知道是否有一种方法可以从本机代码 Objective C 或 Java 访问 AsyncStorage 存储的数据 Thanks 如果你导入RCTAsyncL
  • iOS 应用程序中的屏幕共享? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想与运行相同应用程序的其他设备共享
  • 使用 Homebrew 安装 Git 时出现问题 [重复]

    这个问题在这里已经有答案了 可能的重复 使用 Homebrew 升级 Git 时出现问题 https stackoverflow com questions 12362021 problems upgrading git with home
  • 保留rootViewController?

    我想知道是否有人可以帮助我解决下面代码中的内存管理问题 我对 rootController 特别感兴趣 当我执行 initWithRootViewController 时它是否会被保留 或者它是否 这是我的猜测 通过窗口 addSubVie
  • 从 HealthKit 获取昨天的步数

    我正在构建一个供个人使用的应用程序 目前我正致力于如何从 healthkit 中准确获取昨天的步数 然后从那里将其放入变量中 我知道应该很容易 我有一个 HealthKitManager 类 它从视图内部调用该函数 然后将其附加到同一视图中
  • 如何比双击更快地识别单击?

    我有一个UITableView与我添加单击的行and双击手势 let doubleTap UITapGestureRecognizer target self action doubleTap doubleTap numberOfTapsR
  • iOS 13:MPMediaPickerController - 内部错误/找不到请求的应用程序扩展

    看来一般MPMediaPicker在 ios13 ipad air 2 iphone SE 上不再工作 从那里复制的示例 1 1 没有显示媒体选择器https developer apple com documentation mediap
  • ipa 应用程序无法添加到我们的 itunes 库,它不是有效的应用程序

    我使用 xcode 6 和 swift 语言制作了一个未签名的 IPA 应用程序 我已压缩 app 文件并将其扩展名更改为 ipa 当我想在越狱的iPhone上安装这个 ipa文件时 出现以下错误 无法将应用程序 youtapp ipa 添
  • 从 UITableViewCell 隐藏删除按钮

    当我的表视图处于编辑模式时 会出现红色 按钮 当用户点击其中之一时 会出现 删除 按钮 当用户点击 删除 时 我首先检查一些内容 部分在线 可能不允许此删除 当不允许删除该单元格时 如何以动画方式隐藏 删除 按钮并让红色 按钮再次变成 所以
  • CIImage内存未释放

    我正在尝试拍摄一系列图像 混合当时的 X 图像并生成新图像 这是我必须完成此任务的代码 static func blendImages blendFrames Int blendMode CIImage BlendMode imagePat
  • 在线和离线管理 iPhone 应用程序

    我被困在一个点上 我也在离线管理我的应用程序 第一次我从网络服务获取所有配置文件数据并将其路径存储到 sqlite 中时 我在更新这些数据时遇到问题 例如如果图像发生更改 我应该如何通知我的应用程序 我在 Google 上搜索了它 唯一的解
  • 错误:“字符串”无法转换为“字符串!”

    mapView rac valuesForKeyPath userTrackingMode observer self subscribeNextAs block handling 我收到一个错误 String is not convert

随机推荐

  • (iOS) 应用程序是否可以打开 iTunes 音乐播放器应用程序(最好直接进入“正在播放”屏幕)?

    我希望能够在点击按钮时从我的应用程序启动 iTunes 应用程序 请注意 我指的是实际的音乐播放器 而不是 iTunes Store 或 App Store 我最好希望它直接进入 正在播放 屏幕 有什么办法可以做到这一点吗 是的 可以使用以
  • Windows Azure 上的 32 位旧版 COM DLL

    我在我的 Web 应用程序中使用大约 15 20 个旧版 32 位 C COM DLL 其中一些 32 位 DLL 具有第 3 方依赖项 这些依赖项是 DLL 的 COM 或本机依赖项 我正在考虑迁移到 Windows Azure 据我所知
  • 使用字节的 AWS Rekognition JavaScript SDK

    The AWS Rekognition Javascript API指出对于rekognition compareFaces params 方法 将SourceImage and TargetImage可以采取Bytes or S3Obje
  • 使用 AVAssetReader 绘制波形

    我使用 assetUrl 从 iPod 库中读取歌曲 代码中名为 audioUrl 我可以用多种方式演奏它 我可以剪切它 我可以用它做一些处理 但是 我真的不明白我要用这个 CMSampleBufferRef 做什么来获取绘制波形的数据 我
  • Facebook init() 的 channelUrl 参数是否已弃用?

    我记得有一个channelUrl选项FB init 但根据这一页 此功能是否已弃用 是的 不再需要channelUrl 以下是博客文章中的引用 更改了 JavaScript SDK 的浏览器要求 为了使 JavaScript SDK 能够与
  • include "file.h" 与 有什么区别?

    我正在 Visual studio 2010 中工作 我在项目属性 gt 链接器 gt 常规 gt 其他目录中添加了一个目录 如果我使用该项目可以编译 file h 但如果我使用则不会
  • 如何使用 Java 中的 DateFormat 解析月份完整形式字符串?

    我试过这个 DateFormat fmt new SimpleDateFormat MMMM dd yyyy Date d fmt parse June 27 2007 error Exception in thread main java
  • 工具提示和弹出窗口在 Bootstrap 5 中不起作用

    我使用 Bootstrap 5 创建了一个非常小的网站 我使用 工具提示 和 弹出窗口 在页面底部创建了 2 个按钮 但它们不起作用 没有显示任何内容 这是我的网站 位于页面底部 https www mathieulebert fr 这是
  • Java:将多个数组交错成一个数组

    I found similar关于将两个数组列表交错为一个的问题 但它是在 PHP 中 我在面试中也被问到这个问题 但无法解决 回到SO看看是否已经解决 但我只能找到这个paper 那么有指向伪代码或方法定义的指针吗 Big O 限制 O
  • 为什么临时获取右值地址是非法的?

    根据 如何绕过警告 右值用作左值 Visual Studio 只会对如下代码发出警告 int bar return 3 void foo int ptr int main foo bar 在 C 中是不允许获取临时地址 或者至少是由某个对象
  • 使用 2 种可能的布局查看绑定,将绑定变量分配给 2 个生成的绑定类

    所需功能 我有一个活动 它有一个从后端收到的值 该值指示使用两种布局之一 我们称这个值为布局类型为了简单起见 在下面的示例代码中我们假设我们不关心它将如何分配 因此 我有两个布局 xml 文件 我们称它们为布局1 xml 布局2 xml 执
  • 在头文件与实现文件目标 c 中定义属性

    在基于页面的应用程序模板中 我在实现 m 文件中经常看到这种情况 interface ModelController property readonly strong nonatomic NSArray pageData end 为什么不在
  • 需要使用虚拟化和按需加载的 WPF TreeView 搜索示例

    我需要在WPF中实现搜索功能TreeView 基本上我需要记住最后的用户选择 我尝试过建议的各种方法 但没有任何效果virtualization已在我的中启用TreeView并且子节点仅在父节点展开时才加载 延迟加载 有人知道有一个示例同时
  • 将计算机加入工作组

    如何查询特定工作组中所有可访问的计算机 您可以使用活动目录 API 检查目录项类 不要忘记添加对System DirectoryServices dll 这是一个简短的例子 using DirectoryEntry workgroup ne
  • 通过管道发送多个文件

    我们正在使用express 4 现在我有这样的东西 var express require express router express Router router get local modules function req res ne
  • 谷歌地图 API,提供的 API 密钥无效

    这是我第一次在堆栈溢出上发布问题 真心希望大家能帮忙 我第一次尝试使用谷歌地图地理编码 api 但无法让它工作 我使用的网址格式是 https maps googleapis com maps api geocode json addres
  • Qt 应用程序 UI 元素在 Docker 中随机呈现为空白/黑色

    我准备了Dockerfile构建我的 Docker 镜像Qt应用程序 要运行应用程序 我使用 X 我启用对 X 服务器的访问 xhost local root 然后我使用以下命令来运行它 docker run it env DISPLAY
  • 保留的 Python 模块/包名称是什么?

    我在使用 Python 单元测试时遇到了一个奇怪的错误 我的项目中有两个文件夹 project code init py empty app py defines my App class test test py contains my
  • 快速 firestore 检查文档是否存在

    使用 swift 和 firestore 我想检查 已使用的用户名 集合以查看用户名是否已被使用 以及它是否已提醒用户它已被使用 否则如果它仍然可用 我想创建该文件 我想要做的要点概述如下 我可以毫无问题地保存数据 尽管它检查其文档是否存在
  • 如何让RACSignal变热?

    ReactiveCocoa 可以通过调用它的方法将信号转换为 热 信号 subscribeCompleted 但我认为如果您不关心结果 即没有订阅者 则此方法非常冗长 RACDisposable animationDisposable se