ios - 监视NSNotifications

标签 ios objective-c cocoa-touch nsnotificationcenter nsnotifications

我在对Overhead of NSNotifications这个帖子的评论中注意到,用户JustSid说

如果应用程序在每个运行循环周期内未发送30+,则开销不会很明显

我想编写一个小的帮助程序类,以跟踪在当前运行循环周期中已发送了多少NSNotification,并在其超出某个可预配置的数目时提醒我。我知道我可以注册所有通知(将nil传递给名称和对象),但是如何跟踪它们从哪个运行循环发送?

最佳答案

在NSNotificationCenter上创建一个类别可以很容易,该类别在添加通知观察者时会递增一些内部整数(因此在删除通知时会递减),但是您必须问自己:多少钱太多了?

如果您认为它是任意整数(例如,假设为30),那么在具有更多内存和处理器约束的设备上进行测试时会发生什么?如果您在可以轻松处理30位观察者和通知的设备上进行测试,那会发生什么情况?尽管可以编写通用规则,但不可能评估每种情况下通知对应用程序响应时间的影响。

另一种可能是,当大量的观察者将某些系统功能带入爬网时,让后台进程查询通知堆栈(或以某种方式像上面那样内部对其进行衡量)。当然,如果不考虑这是太多工作的事实,那么您将设计一个子系统,该子系统可能首先使用要对其进行补救的方法,因此会占用尽可能多的内存,并从性能中窃取了很多东西!

TL; DR您可以使用许多其他模式和结构来代替通知,那么为什么您要满足NSNotification的需求呢?

关于ios - 监视NSNotifications,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15210898/

相关文章:

ios - 如何给uiwebview中的所有url添加一个参数

ios - 怎样切椭圆?

objective-c - 如何在 iOS 中读取 HealthKit 的血压数据?

objective-c - 从外部类访问私有(private)变量 - iOS

ios - Apple在这里使用什么控件? (包括截图)UIButton? UITableViewCell?还有别的吗?

iphone - 不可删除的 iOS 应用程序可能吗?

ios - 为什么在 iOS 8 中我的应用程序在启动时采用了错误的方向?

ios - Xcode 8 GM -- SQLite 错误代码 :6922, 'disk I/O error'

c++ - 如何从 C++ 文件调用 Objective C 头文件?

ios - 返回静态变量时的线程安全