gpt4 book ai didi

iphone - 委托(delegate)正在通过我的应用程序记录非公开事件 : can those events be detected?

转载 作者:行者123 更新时间:2023-11-29 05:03:45 25 4
gpt4 key购买 nike

这些通知是代表我的应用程序(实现 GKSessionDelegate)记录的,我真的可以利用这些事件来帮助遇到连接困难的用户。有什么办法可以检测到它们吗?委托(delegate)没有任何直接引用这些事件的公共(public)实例方法。

我希望我可以为代表们配备某种通用事件包罗万象的东西。

GKSessionTester[79766:307] BTM: attaching to BTServer
GKSessionTester[79766:307] <<< Session >>> +[GKBluetoothSupport _determineBluetoothStatus]: BT not available - try again later.
GKSessionTester[79766:307] BTM: posting notification BluetoothAvailabilityChangedNotification

最佳答案

Gonzalo评论中提到,看起来正在发布名为 BluetoothAvailabilityChangedNotification 的通知。

Cocoa 的通知系统基于 NSNotificationCenter,它维护观察者列表并根据名称转发通知,这些名称只是 NSString。如果您调用以下电话,您很可能会收到通知:

[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(bluetoothAvailabilityChanged:)
name:@"BluetoothAvailabilityChangedNotification"
object:nil];

并实现该方法:

- (void)bluetoothAvailabilityChanged:(NSNotification *)notification
{
// maybe [notification userInfo] has some useful info...
}

如果 GameKit 使用单独的通知中心对象,您可能不会收到任何通知。

这算不算私有(private) API?我想说这并不比解析控制台输出更糟糕。您不是在未记录的类上调用方法,而是被动地观察以给定名称发布的通知。

当然,苹果的意见是唯一重要的。如果我处于你的立场,我会确保:

  1. 如果从未发布通知,您的应用程序将正常运行(因为 future 的 iOS 可能不会发布通知,或者您可能必须删除代码并在没有通知的情况下重新提交);
  2. 您的应用不会对 NSNotification 的 object 或其 userInfo 字典的内容做出任何假设(因为它们今天包含的内容将来可能会发生变化)。

或者,您可以找出一种方法来拦截您自己的应用程序的 STDOUT 和 STDERR(任何适用于通用 UNIX 的解决方案也可以适用于 iOS)并观察相关日志消息的文本。

关于iphone - 委托(delegate)正在通过我的应用程序记录非公开事件 : can those events be detected?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6192019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com