观察类中静态变量的值?

2023-11-25

我有一堂课,有一个static var存储当前在线连接状态的位置。我想观察的价值ConnectionManager.online通过其他课程。我想这样做KVO,但声明一个static变量为dynamic导致错误:

class ConnectionManager: NSObject {
    dynamic static var online = false
    // adding 'dynamic' declaration causes error:
    // "A declaration cannot be both 'final' and 'dynamic'
}

这样做最优雅的方法是什么?

Update。这是我的 KVO 部分的代码:

override func viewDidLoad() {
    super.viewDidLoad()

    ConnectionManager.addObserver(
        self,
        forKeyPath: "online",
        options: NSKeyValueObservingOptions(),
        context: nil
    )
}

override func observeValueForKeyPath(keyPath: String?, 
                                     ofObject object: AnyObject?, 
                                     change: [String : AnyObject]?, 
                                     context: UnsafeMutablePointer<Void>) {
    if keyPath == "online" {
        print("online status changed to: \(ConnectionManager.online)")
        // doesn't get printed on value changes
    }
}

就目前而言,Swift 无法拥有可观察的类属性。 (事实上​​,静态属性只是全局变量,其名称空间限制在类中。)

如果您想使用 KVO,请创建一个共享实例(单例类),其中包含online属性并将观察者添加到实例。

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

观察类中静态变量的值? 的相关文章

  • NSDateFormatter 返回错误的日期 + Swift

    Code let dateString 2016 04 02 var formatter NSDateFormatter NSDateFormatter formatter timeZone NSTimeZone abbreviation
  • 如何检测Retina高清显示屏?

    UIScreen有一个新的 nativeScaleiOS 8 中的属性 但文档没有提及它 property nonatomic readonly CGFloat nativeScale 还有一个scale属性 但文档说它是 2 用于视网膜显
  • Objective Flickr 照片上传错误

    我正在使用 ObjectiveFlickr 库将照片从我的 iPhone 应用程序上传到 Flickr 我可以授权该应用程序并执行一般请求 但在尝试上传照片时遇到错误 要上传的照片是使用 AVFoundation 捕获的图像 这是相关代码
  • 如何从代码隐藏中设置 CarouselView 的项目?

    我有一个 CarouselView 它绑定到图像的 ItemsSource 但我想通过更改 CarouselView 的索引来更改当前显示的图像 我尝试使用 CarouselView Position 作为必须选择的元素的索引 但不幸的是这
  • 如何请求用户开启定位服务

    我需要我的应用程序来访问用户的当前位置 它在应用程序开始时检查用户是否已设置 如果没有 我需要应用程序显示提示以使其使用位置服务 就像警报视图一样 点击按钮 它应该会带您进入 iPhone 上的位置服务屏幕 您可以通过以下代码检查 loca
  • PresentModalViewController 不执行任何操作

    我有一个 UIViewController parent 调用presentModalViewController与另一个 UIViewController child on viewDidLoad If parent没有 UINaviga
  • 在后台任务中安排通知

    我正在为 iOS 开发一个日历 闹钟应用程序 它与网络服务器同步 当在服务器上添加活动时 会发出推送通知 以便 iOS 客户端可以获取新数据 并根据需要更新和安排下一次警报的时间 本地通知 但这仅在应用程序在客户端打开时才有效 我希望客户端
  • Swift getnameinfo IPv6 结果不可靠

    我有以下扩展sockaddr extension sockaddr Indicates if this is an IPv4 address var isIPv4 Bool return sa family UInt8 AF INET In
  • 无法使用 Xamarin 和 WCF 访问 Web 服务

    我想使用 Xamarin 和 WCF 来使用公共 Web 服务 对于这个演示 我将使用Xamarin iOS 这是我试图使用的 公共 网络服务 http www webservicex net globalweather asmx WSDL
  • 在 Swift 中自动移动 UISlider

    我想在按下按钮时将 UISlider 从 minValue 循环移动到 maxValue 并在再次按下按钮时将其停止在当前位置 我想使用 Swift 我遇到的主要问题是函数 slider setValue 太快了 我希望动画更慢 IBAct
  • 线程 1:信号 SIGABRT - AppDelegate.h

    main m Journey Created by Julian Buscema on 2014 07 13 Copyright c 2014 Julian Buscema All rights reserved import
  • PrepareForSegue之谜

    我在两个不同的 VC 中有一个prepareForSegue 方法 一个使用一个if声明 而另一个旨在使用switch 除了名称之外 代码几乎相同 这个效果很好 void prepareForSegue UIStoryboardSegue
  • 我可以知道 requireGestureRecognizerToFail 到底会做什么吗?

    谁能告诉我下面的代码行到底会做什么 我已经提到过Apples https developer apple com library ios documentation uikit reference UIGestureRecognizer C
  • 使用 UIImageJPEGRepresentation 时,compressionQuality 应该是多少?

    我想对用户库中的照片应用滤镜 然后将其写回磁盘 我在用着UIImageJPEGRepresentation 该函数需要一个UIImage and a compressionQuality值介于 0 0 和 1 0 之间 因为我想保留原始质量
  • 如何将音乐从我的应用程序切换到 iPod

    我在用MusicPlayerController我的应用程序中的对象来播放音乐 我知道当 iPhone ipod 应用程序终止时 可以继续播放我的应用程序音乐 我该怎么做 这涉及到一些事情 您必须在两种音乐播放器之间进行选择 应用程序音乐播
  • iOS WKWebView.scrollView委托导致BAD_ACCESS

    我的 viewController 有一个 UIView 属性 其中包含一个 WKWebView 我将 WKWebView rollView 委托设置为我的 viewController 它是我的 UIView 子类的公共函数 并在我的 v
  • xcode 6.1 (Swift) 中的 SIGABRT 运行时错误

    与最初的代码相比 唯一的更改是在ViewControl swift override func viewDidLoad newMessage hidden true super viewDidLoad Do any additional s
  • 在 UIMenuItem 上设置accessibilityLabel

    我正在尝试设置accessibilityLabel of a UIMenuItem而且似乎没有效果 无论如何 VoiceOver 只是读取项目的标题 let foo UIMenuItem title foo action selector
  • 为什么这个 SKPhysicsJointPin 不能将这 2 个精灵保持在一起?

    我显然不太了解 SKPhysicsJoint 但是除了 Apple 文档之外 网上的信息还很少 下面的代码有什么问题 我认为应该保持头部和颈部永久连接 我的意图是它们就像两张带有大头针的纸 这样它们可以旋转一点 但不仅仅是完全分开 当我运行
  • KeyboardAvoidingView - 隐藏键盘时重置高度

    我正在使用 React NativeKeyboardAvoidingView设置我的高度View当显示键盘时 但是当我关闭应用程序中的键盘时 视图的高度不会变回原来的值

随机推荐

  • 除了 processmessage 之外,我还能用什么来保持程序响应?

    我有一个可以运行很长时间扫描数据库的应用程序 在此过程中 我使用 processmessage 保持程序响应 当我的进度条更新并增加时 会触发此进程消息 在大多数情况下 这工作得很好 但是当数据库变得更大时 进度条需要更长的时间才能上升 1
  • jquery:-[对象对象]错误

    我有一个validation js文件 var name name ajax type get url test jsp data name name success function msg result hide result html
  • Filebeat 可以使用多个配置文件吗?

    我在一台服务器上运行多个应用程序 我想使用 filebeat 将每个日志发送到 Logstash 但是 为了配置管理 我希望能够为每个应用程序分别向 filebeat 添加配置 Logstash 从 a 读取其配置conf d目录 据我了解
  • 参数扩展后 zsh 没有被 IFS 分割

    这是我的代码 用于循环冒号分隔的值并执行某些操作 与每个值 f IFS for arg in 1 do echo arg arg done f foo bar baz 这在大多数 POSIX 兼容的 shell 中工作得很好 dash fo
  • C 中 ASCII 字符串的压缩

    我有一些 C 代码 将 ASCII 字符串作为四字节长度存储在内存中 后跟字符串 字符串长度范围为 10 250 字节 为了减少占用 我想动态地单独压缩每个字符串 仍然存储 压缩字符串的 长度 后跟压缩字符串 我不想在比单个字符串更大的范围
  • Spring @Transactional 注解属性优先级/继承

    如果是REQUIRED当调用方方法本身是事务性的时 如果它们不同 当前方法是否会覆盖封闭的事务属性 例如 rollbackFor 插图 Class A Transactional propagation Propagation REQUIR
  • mPDF 中的自定义字体无法加载

    我正在使用 mPDF 7 x 版本并尝试遵循此文档 https mpdf github io fonts languages fonts in mpdf 7 x html 我就是无法让它发挥作用 没有错误 但字体仍然是默认的 mPDF 字体
  • T4 用于夏普架构/Northwind 问题

    我刚刚下载了 Sharparchitecture Northwind 我正在尝试 让粗脚手架开始工作 除了添加之外我什么也没改变 缺少对该类库的引用 我试着跑 ScaffoldingGeneratorCommand tt 和我遇到了以下 3
  • 如何将 nohup 输出重定向到指定文件?

    我从其他示例中尝试过的所有内容似乎都不起作用 我正在尝试使用 nohup 运行我的应用程序 但将应用程序的输出附加到文件中 我尝试过以下一些方法 这些似乎都不起作用 nohup dotnet application dll gt out l
  • WCF 中的 HttpContext

    为了使用 httpContext 我更改了 app config 并添加了
  • PHP字典类?或者替代方案?

    基本上 我正在寻找的是某种在 PHP 中实现字典的类或方法 例如 如果我正在构建一个单词解密器 假设我使用了字母 a e l p p 排列的可能性是巨大的 我如何只显示那些实际的单词 苹果 苍白等 Thanks 经典的单词查找问题可以使用以
  • 实体框架创建空迁移,但坚持认为我的模型不同

    今天是悲伤的一天 今天我看到的第一件事是 EF 异常说 自数据库创建以来 支持 DomainContext 上下文的模型已发生变化 已经接近午夜了 我仍然看到这个错误 这是我职业生涯的终结 我很确定模型中没有任何变化 但错误却出现了 我尝试
  • 如何阻止 Apache 中的特定用户代理

    我正在配置我的 Django 应用程序以通过电子邮件向我发送错误 异常 通常没有问题 但我的电子邮件托管在 Office 365 上 并且 Microsoft 似乎会自动扫描和加载电子邮件中的 URL 结果是它命中了我的 Django 应用
  • PHP 检测文件系统编码/保存具有非拉丁文件名的文件

    我需要使用 PHP 将非拉丁文件名的文件保存在文件系统上 我想让这个工作跨平台 我如何知道可以使用什么编码来写入文件 我知道许多现代文件系统都是基于 UTF 8 的 这是正确的吗 但我怀疑 Windows XP 是基于 UTF 8 的 那么
  • 为什么setContextClassLoader()方法要放在Thread上呢?

    为什么是setContextClassLoader 方法置于Thread 什么不同的线程有不同的类加载器 问题是如果我延长一个ClassLoader 加载了一些新类 到我的自定义类加载器 现在 我希望它成为上下文类加载器 所以我调用该方法T
  • AtomicInteger 等原子包类如何工作

    我读过 使用原子包类使我们能够进行线程安全 无锁编码 但我不太确定原子包类中的方法在不使用锁或任何同步关键字的情况下如何提供线程安全性 任何帮助都将不胜感激 他们使用非常低级的指令 例如比较和交换 以及来自的多种其他方法sun misc 不
  • CONNECTIVITY_ACTION 的 BroadcastReceiver 始终在intent.getExtras() 中返回 null

    我正在尝试接收来自 CONNECTIVITY ACTION 的广播消息 register BroadcastReceiver on network state changes final IntentFilter mIFNetwork ne
  • python 以什么顺序显示字典键? [复制]

    这个问题在这里已经有答案了 gt gt gt D a 1 b 2 c 3 gt gt gt D a 1 c 3 b 2 我刚刚在 Python shell 中执行了此操作 我只是想知道为什么键 c 会在键 b 之后 该顺序与它们内部的工作方
  • jQuery.validator.unobtrusive.adapters.addMinMax 往返,在 MVC3 中不起作用

    我正在使用 DataAnnotations jQuery validate 和 jquery validate unobtrusive 创建一个日期范围验证器 我已经阅读了以下内容 http bradwilson typepad com b
  • 观察类中静态变量的值?

    我有一堂课 有一个static var存储当前在线连接状态的位置 我想观察的价值ConnectionManager online通过其他课程 我想这样做KVO 但声明一个static变量为dynamic导致错误 class Connecti